3 ms·
>Haskell and the like will remain used only by people that just think there's no way to write any useful program without first learning all about category theor
by scythe 12y ago
>Haskell and the like will remain used only by people that just think there's no way to write any useful program without first learning all about category theory.
If that was Haskell's problem, its effects would be unique to Haskell. Rather, Haskell, like Erlang, Lisp, Eiffel, Smalltalk, and, in its early days -- and it had to fight to overcome this -- Java: these all have or had the same problem, which is that they don't integrate well with the "outside world". As a result, a great deal of effort is expended in the developer communities surrounding these languages to reinvent the wheel, axle, spoke, tire, hubcap, and spinner, which prevents said developers from making things that are truly interesting.
Languages which work with the "outside world" can be used to develop great software even if they are not popular, like Lua and CoffeeScript. Go, Swift, Scala and Rust learned this. The most obvious point of contrast, though, is how quickly Clojure became more popular than Scheme/Racket, despite being basically the same thing.
- Derbasti 12y agoIn what way does Lua interact with the outside world? Are you referring to it being embeddable, or the FFI in luajit2? Also, in what way does Swift work with the outside world? It seems to be locked in pretty tightly in its own little world?
- scythe 12y ago>In what way does Lua interact with the outside world? Lua's C API allows Lua programs to bind to any C library. It's probably better at this than anything else out there, and there have been some attempts at really ambitious things like automatically generated Qt bindings: https://github.com/mkottman/lqt https://github.com/mkottman/lqt >in what way does Swift work with the outside world? Swift uses the Objective-C runtime. It interoperates with Objective-C very well and is designed to do so; by definition this means it also interoperates with C quite well. See: http://en.wikipedia.org/wiki/Swift_(programming_language)#Libraries.2C_runtime_and_development http://en.wikipedia.org/wiki/Swift_(programming_language)#Li...
- wirrbel 12y agoI like to see Clojure definitely scheme-inspired, but it is a very different language. Scheme has this approach where you can build almost anything out of cons, car, cdr. After using Clojure for a while, all this cons, car, cdr stuff of Scheme feels like being stuck in implementation detail. With the scheme community insisting on (1) recursion as the primary means for looping (2) no general polymorphism in the language standard I see no future in Scheme. (1) - I have seen the light with Clojure's `for` macro. While it is not much more as a `map` (or a python/haskell list comprehension) its that kind of sugar that is really readable and is a good platform for beginners to reach up to map, fold, and other higher order functions. (2) - Lists have car, cdr, Lazy lists in Scheme have stream-car, stream-cdr. I.e. I cannot use an algorithm that works on lists on lazy lists, etc. Even some lightweight dispatch here would make scheme so much more powerful and useful. So: While clojure is not much more than Scheme, it demonstrates how a little more can actually make a huge difference in usability and adoption PS: I really like Scheme as a small, simple language that gives you a good idea how an interpreter might work under the hood.