top | item 19311065

(no title)

kuwze | 7 years ago

"Each dimension of the cube corresponds to a new way of making objects depend on other objects"

Is it normal to refer to data structures as objects? Just to my knowledge most typed languages abhor the awesome potential of object-oriented programming, like the CLOS.

discuss

order

betterunix2|7 years ago

In this context I think it refers to mathematical objects, since the dependencies can be between either values or types in either direction (values to values, types to types, types to values, values to types).

Also, lexical closures in a functional language are "classes" from the OO setting, so it is natural to implement classes if you want them; see e.g. OCaml. What you rarely see in the functional setting are common OO design patterns, because many of those patterns are unnecessary or awkward in functional languages.

simiones|7 years ago

I don't think you meant to imply this, but for anyone else - please note that the reverse can also be said - closures from an FP setting are objects from an OO setting, and it is natural to implement closures if you want them; see e.g. C++ "functors".

That is, objects and closures can both be implemented in terms of the other, if your language doesn't happen to offer both.

mruts|7 years ago

I think Scala does a good job of unifying OO and FP. And because of everything being first class, you get to eliminate all the ridiculeous design patterns and end up with a very nice FP system based upon objects and traits or typeclasses

kuwze|7 years ago

Thank you, I never knew how ignorant I was about that.

Jim_Heckler|7 years ago

Could you explain what you mean by closures being classes? My only familiarity is from Emacs/Common Lisp and Clojure.

igravious|7 years ago

It's type theory, so the `objects' in question are either systems of terms and/or types. See where it says:

    terms allowed to depend on types, corresponding to polymorphism.
    types depending on terms, corresponding to dependent types.
    types depending on types, corresponding to type operators.
So I think they're using the word `objects' either loosely (as in, they could have said `things' but maybe that's too informal?) or they're using it as a shorthand for `type-theoretic objects', in which case they're talking about languages of a certain constrained expressive power: the language which features polymorphism, the language which features dependent types, the language which features type operator.

`object' here refers neither to the objects of object-oriented programming nor to object in common lisp object system.

edit: IANATT

chriswarbo|7 years ago

I think this is the mathematical/logical distinction between "object level" and "meta level".

The meta level is about lambda terms, involving things like variable names, abstractions, judgements, derivations, equivalences, reductions, substitutions, etc.

The object level is what lambda terms are about, involving things like values, types, variable contents, etc.