Live data from Hacker News

A Functional Programming Influence Graph

blog.fogus.me

11–20 of 44 posts

Re: A Functional Programming Influence Graph

#11
post #9
post #8

Earlier quoted context omitted.

Odersky himself has implied that Scala was prompted by Clojure in its recent persistent structure implementations. However, this influence is motivational rather than via copied code (as stated at http://stackoverflow.com/a/3108380 ). Although Odersky does mention the word "copied" in an interview that I had with him, but that state of affairs may have changed ( http://blog.fogus.me/2010/08/06/martinodersky-take5-tol…

My guess was that it was going to be the container library, rather than the language itself. If libraries are included, then Clojure-inspired HAMTs are in Haskell as well. But really, Clojure, Haskell and Scala are all just implementing Bagwell's ideas, http://lampwww.epfl.ch/papers/idealhashtrees.pdf whose feasibility was shown in Clojure. See e.g. for Haskell, originally as http://www.haskell.org/pipermail/haskell-…

> My guess was that it was going to be the > container library, rather than the language itself.

This walks a thin line for sure and in Scala the line is almost microscopic. I'll keep it for now since my reasoning was the same as the Erlang->Scala influence. A core language library that is rarely viewed as other than a core feature.

Re: A Functional Programming Influence Graph

#12
Nice. I was under the impression that ALGOL's IF-THEN-ELSE statement was inspired by LISP (but I can't seem to find any references more reliable than some wikis). Also, if System F is going to get a line into Haskell, why not give the untyped lambda calculus a line into LISP?

I'm having trouble finding a detailed history of Clean, but I believe it predates Haskell. My understanding is that Miranda prompted a handful of lazy, pure functional languages. Haskell was an attempt to unify them. In Coders at Work, SPJ mentions that a few of those implementors were not interested in participating with the Haskell group. Is Clean one of those languages? (Of course, that doesn't mean they haven't influenced each other over the years, what I'm trying to suggest is that maybe an edge belongs from Miranda to Clean as well.)

It'd be interesting to see a graph of the influence of functional languages on other languages, too. Things like Python's list comprehensions borrowed from Haskell, and JavaScript borrowing lots of things from Scheme. I can only imagine that such a graph would be larger and less comprehensible than the present one!

Re: A Functional Programming Influence Graph

#13

Nice. I was under the impression that ALGOL's IF-THEN-ELSE statement was inspired by LISP (but I can't seem to find any references more reliable than some wikis). Also, if System F is going to get a line into Haskell, why not give the untyped lambda calculus a line into LISP? I'm having trouble finding a detailed history of Clean, but I believe it predates Haskell. My understanding is that Miranda prompted a handful…

All amazing questions -- you've managed to identify many gray areas of the graph. This graph is the seed to a large research project and will likely change as the research proceeds.

Re: A Functional Programming Influence Graph

#14
You might argue that Erlang has influenced Haskell. (E.g. Erlang -> Haskell exists).

In two respects:

* the view patterns syntax was built to enable bit level parsing, inspired by the Erlang support (I wrote the binary library to emulate Erlang support for IP header parsing).

More recently,

* Cloud Haskell

http://hackage.haskell.org/trac/ghc/wiki/ErlangInHaskell

Re: A Functional Programming Influence Graph

#16
post #13

Nice. I was under the impression that ALGOL's IF-THEN-ELSE statement was inspired by LISP (but I can't seem to find any references more reliable than some wikis). Also, if System F is going to get a line into Haskell, why not give the untyped lambda calculus a line into LISP? I'm having trouble finding a detailed history of Clean, but I believe it predates Haskell. My understanding is that Miranda prompted a handful…

All amazing questions -- you've managed to identify many gray areas of the graph. This graph is the seed to a large research project and will likely change as the research proceeds.

What sort of research project? I'm also curious where you draw the line regarding "traditionally functional" languages with respect to multiparadigmatic languages.

Re: A Functional Programming Influence Graph

#18

The big surprise for me: Why does this graph show Scala as a descendent of Clojure? I was not aware of that at all. What features or ideas does Scala get from Clojure?

Discussed below. The Scala containers library contains an implementation of Bagwell's HAMT type; which first gained fame in its Clojure implementation. HAMTs have since appeared in many language library suites.

Re: A Functional Programming Influence Graph

#19
Perhaps there ought to be a single square to represent all languages that aren't traditionally considered functional languages, to represent the influence that functional languages have had on the rest of the language ecosystem. For example, I'd say Erlang's concurrency model influenced both Go and Rust (and Rust would inherit from both SML and Haskell as well).

Re: A Functional Programming Influence Graph

#20
post #14

You might argue that Erlang has influenced Haskell. (E.g. Erlang -> Haskell exists). In two respects: * the view patterns syntax was built to enable bit level parsing, inspired by the Erlang support (I wrote the binary library to emulate Erlang support for IP header parsing). More recently, * Cloud Haskell http://hackage.haskell.org/trac/ghc/wiki/ErlangInHaskell

There's also an example of Erlang-style actors in Haskell in this video: http://yow.eventer.com/events/1004/talks/1055
Post reply on HN