* Primitive Types * Common * bool * char * int (= int32) * uint (= uint32) * float (= float64) * decimal * number (= decimal, change with -number: option) * dynamic * Explicit Sizes * int8, int16, int32, int64 * uint8, uint16, uint32, uint64 * PrimitiveTypeMembers * Complex Types * Class * Single inheritance * Heap-based * Popular classes * Object, String, !StringBuilder, Exception * List, Dictionary, Set * Stack, Queue * !TextWriter, !TextReader, !StringWriter * Struct * No inheritance (other than Object) * Value-based * Popular structs * !DateTime, Color (System.Drawing) * Interface * Multipile inheritance * No code implementation * Popular interfaces * IEnumerable, IEnumerable (but use T* instead; see streams below) * IComparable, IComparable * Nilable Type * foo? - can be "foo" or "nil" * applies to all types * "dynamic" implies "dynamic?" meaning you can always pass "nil" where "dynamic" is expected * Streams * foo* - zero or more objects of type foo * See StreamType * Working with types at run-time * You can get the type of "x" with "x.getType" * You can make instances with a type at run-time * t = x.getType * obj1 = t() * obj2 = t(0, 0) * See also * [http://cobra-language.com/forums/viewtopic.php?f=4&t=291 Discussion on types] TODO: arrays, passthrough, vari, typetype, generics, local var type inference, greatest common denominator