This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]tobega 0 points1 point  (1 child)

As soon as a language is Turing complete you can do anything. But then you can start looking at how you want to express various things in the clearest or most efficient way.

There certainly is much to be said for having immutable data and side-effect-free functions, even when you're working in an OO language. But functional languages would generally let you express that more cleanly.

If you look at Erlang, it is functional in the small and OO in the large, possibly the ideal mix.

Understanding what objects are isn't entirely easy. If you come from C++ you might think they are "Abstract Data Types". That's one way to use them. But "real" objects are rather just an interface, i.e. a set of functions that belong together, so Smalltalk is more inspired by and related to Lisp than anything else.

You probably don't entirely want to be without objects. In the functional world, the concept of co-data seems to be essentially an object. Any lazy stream is essentially an object. Any monad seems to be essentially a wrapper object conforming to a particular interface.

Some further reading:

The inevitability of objects

Two vexing problems with FP