Why isn Kogut object-oriented?
Kogut is object-oriented, just not in the traditional sense. Instead of classes, Kogut uses types. To hold instance variables, Kogut uses fields (ie. records or structs). For inheritance, Kogut uses subtyping. For methods, Kogut uses functions that dispatch on the types of their arguments. These are more like multimethod than traditional single-dispatch message-passing systems. For private methods, Kogut uses privacy in modules. For class methods, Kogut can either have functions that dispatch on the type TYPE (which all types are in) or you can simply use modules. When discussing Kogut, it is typical to hear people using object to mean any first-class thing. This is typical of functional programmers and does not mean something set up to recieve messages, as it would in a language with traditional object-orientation.