X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=family_tree_of_functional_programming_languages.mdwn;h=cc2b424c057e775978b6c752996bfcdedec713eb;hp=0086483566cfe82c4774772748624a52c1dc60a3;hb=d437f108ffa48fa141665ffb0b836a9ad53093e7;hpb=646121317052290fe8bae06cbb4293c6c6ae50d9 diff --git a/family_tree_of_functional_programming_languages.mdwn b/family_tree_of_functional_programming_languages.mdwn index 00864835..cc2b424c 100644 --- a/family_tree_of_functional_programming_languages.mdwn +++ b/family_tree_of_functional_programming_languages.mdwn @@ -1,4 +1,5 @@ -There's no need for you to know this for our seminar. But in case you're interested... +There's a lot more trivia and links here than anyone needs to know for this seminar. It's +there for anyone who may be interested. Others (and ourselves) will often talk about "functional programming languages." But it would be more appropriate to talk of functional *paradigms* @@ -100,12 +101,17 @@ the seminar. Most programming languages, functional or not, use **strict/eager evaluation**. For instance, languages of the ML family are all statically-typed functional languages with strict/eager evaluation. These include [[!wikipedia Standard ML desc="SML"]] and -[[!wikipedia Caml]] and [[!wikipedia Nemerle]]. Other statically-typed -functional languages with strict/eager evaluation are [[!wikipedia Scala (programming language) desc="Scala"]] and -[[!wikipedia Coq]]. Like Scheme, many of these languages permit *imperatival* -as well as functional coding; but they are regarded as functional programming -languages because they are so hospitable to functional programming, and give it -a central place in their design. +[[!wikipedia Caml]] and [[!wikipedia Nemerle]]. SML in turn has several variants +or implementations: [[!wikipedia MLton]], [[!wikipedia Standard ML of New Jersey desc="SML/NJ"]], [[!wikipedia Moscow ML]], +and [[!wikipedia Mythryl]]. Microsoft's [[!wikipedia F Sharp (programming language) desc="F#"]] +is derived from Caml. + +Other statically-typed functional languages with strict/eager evaluation are +[[!wikipedia Scala (programming language) desc="Scala"]] and [[!wikipedia +Coq]]. Like Scheme, many of these languages permit *imperatival* as well as +functional coding; but they are regarded as functional programming languages +because they are so hospitable to functional programming, and give it a central +place in their design. A few languages such as [[!wikipedia Miranda (programming language) desc="Miranda"]] and [[!wikipedia Haskell (programming language) desc="Haskell"]] are statically-typed languages that instead mostly use **lazy evaluation**. However,