Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Bongo Bill
Jan 17, 2012

There are a variety of reasons, but the simplest one to understand is that functional programming makes immutability explicit and traditionally either enforces or requires it. Entire classes of errors associated with parallel computation are impossible when acting on immutable data. For instances, consider the humble data race: when the data is immutable, it's meaningless to speak of ensuring that one thread can only read from a variable when another is done writing to it, and all the strategies to ensure this won't happen are unnecessary when the semantics of the language eliminate the entire concept of writing to a variable.

This is an oversimplification, of course.

Adbot
ADBOT LOVES YOU

Bongo Bill
Jan 17, 2012

It's an attempt to further increase our ability to "Make invalid values unrepresentable."

Bongo Bill
Jan 17, 2012

Facebook uses it in production but I don't know to do what specifically.

Bongo Bill
Jan 17, 2012

Clojure is the most modern of the mature lisps, I think.

Bongo Bill
Jan 17, 2012

Pollyanna posted:

I will admit that I have trouble understanding the advantage of having direct access to the AST of a function.

At runtime, there isn't much.

At compile-time, being able to emit functions programmatically is a very powerful form of metaprogramming.

Bongo Bill
Jan 17, 2012

Guacamayo posted:

How do I install Schemeon Windows? I trying to go through SICP.

You might try Racket, which can be configured to use R6RS or other Scheme dialects rather than its own custom dialect.

Adbot
ADBOT LOVES YOU

Bongo Bill
Jan 17, 2012

Typing the Technical Interview

quote:

Haskell is a dynamically-typed, interpreted language.

  • Locked thread