Developer James Coglan has created Fargo, a small experimental programming language for a asynchronous systems in JavaScript. It works in both Node.js and in browsers. Fargo is a modified version of Scheme, a dialect of LISP.

Considering that Douglas Crockford once called JavaScript “LISP in C’s Clothing,” why exactly do we need another Scheme-like language for working with it? According to the ReadMe, Fargo is “designed to ease asynchronous functional programming by providing features missing in JavaScript, namely tail recursion and some form of continuations.”

“The main experiment here is that Fargo supports Ruby-style fibers for pausing and resuming async work,” Coglan writes on the Fargo site.

According to the ReadMe, Fargo features the following syntax elements from Scheme:

  • define for binding variables and creating functions
  • begin for bundling blocks of code as single expressions
  • if for conditional branching
  • lambda for creating first-class anonymous functions
  • quote for defining immutable lists
  • and and or for boolean logic

It also adds more predicates, operators, list primitives and library functions.

Fargo is available under an MIT license.

klint finley