Type System
Hush is strongly dynamically typed, which means all values have a well formed type, but variables are untyped. Therefore, you may assign values of distinct types to a given variable. Python, Ruby, and Lua are also dynamically typed languages, in case you're familiar with any of them.
As in Lua, Hush proposes only a handful of built-in types, and no user-defined types. This makes the type system extremely simple, and yet still it remains quite expressive. The following types are available:
nil: the unit type, usually for representing missing values.bool: the boolean type.int: a 64 bit integer type.float: a 64 bit floating point type.char: a C-like unsigned char type, 0-255.string: a char-array like immutable string.array: a heterogeneous array, 0-indexed (unlike in Lua).dict: a heterogeneous hash map.function: a callable function.error: a special error type, to ease distinction of errors from other values. This type can only be instantiated by the built-instd.errorfunction.
Although it may seem like a limitation to only have a handful of types, Hush provides facilities that enable these types to be extremely flexible. We'll get more in depth about that in practice on the Paradigms section.