Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Off the top of my head:</p> <ul> <li><a href="http://en.wikipedia.org/wiki/Evaluation_strategy" rel="noreferrer"><em>lazy</em> vs. <em>eager</em></a> (aka <em>non-strict</em> vs. <em>strict</em> or <em>call-by-need</em> vs. <em>call-by-value</em>): are function arguments evaluated before the function application, or after, or never?</li> <li><a href="http://en.wikipedia.org/wiki/Referential_transparency_(computer_science)" rel="noreferrer"><em>pure</em> vs. <em>impure</em></a>: does the language allow functions to have side effects? Does it have mutable references?</li> <li><a href="http://en.wikipedia.org/wiki/Type_system" rel="noreferrer"><em>static</em> vs. <em>dynamic</em></a>: does the language check types at compile time or runtime?</li> <li><a href="http://en.wikipedia.org/wiki/Algebraic_data_type" rel="noreferrer"><em>algebraic datatypes</em></a>: does the language support pattern matching over variant types?</li> <li><a href="http://en.wikipedia.org/wiki/Metaprogramming" rel="noreferrer"><em>metaprogramming</em></a>: does the language provide a powerful code generation system?</li> <li><a href="http://en.wikipedia.org/wiki/Concurrency" rel="noreferrer"><em>concurrency</em></a> and <a href="http://en.wikipedia.org/wiki/Parallelism" rel="noreferrer"><em>parallelism</em></a>: are threads/processes a first-class abstraction? Does the language make it easy to run multiple computations at the same time?</li> <li><em>"exotic" types</em>: how expressive is the static type system? GADTs? Dependent types? Linear types? System F?</li> </ul> <p>Only the first two items are really unique to functional languages (i.e., almost all imperative languages are eager and impure).</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload