LiveScript (programming language) explained

LiveScript
Paradigm:multi-paradigm, functional, object-oriented
Designer:Jeremy Ashkenas, Satoshi Murakami, George Zahariev
Developer:Jeremy Ashkenas, Satoshi Murakami, George Zahariev
Latest Release Version:LiveScript 1.6.1
Latest Release Date:[1]
Typing:dynamic, weak
Influenced By:JavaScript, Haskell, CoffeeScript, F#
Operating System:Cross-platform
License:MIT
File Ext:.ls

LiveScript is a functional programming language that transpiles to JavaScript. It was created by Jeremy Ashkenas—the creator of CoffeeScript—along with Satoshi Muramaki, George Zahariev, and many others.[2] (The name may be an homage to the beta name of JavaScript; for a few months in 1995, it was called LiveScript before the official release.[3])

Syntax

LiveScript is an indirect descendant of CoffeeScript.[4] The following "Hello, World!" program is written in LiveScript, but is also compatible with Coffeescript:

hello = -> console.log 'hello, world!'

While calling a function can be done with empty parens, hello, LiveScript treats the exclamation mark as a single-character shorthand for function calls with zero arguments: hello!

LiveScript introduces a number of other incompatible idioms:

Name mangling

At compile time, the LiveScript parser implicitly converts kebab case (dashed variables and function names) to camel case.

hello-world = -> console.log 'Hello, World!'

With this definition, both the following calls are valid. However, calling using the same dashed syntax is recommended.

hello-world!helloWorld!

This does not preclude developers from using camel case explicitly or using snake case. Dashed naming is however, common in idiomatic LiveScript[5]

Pipes

Like a number of other functional programming languages such as F# and Elixir, LiveScript supports the pipe operator, |> which passes the result of the expression on the left of the operator as an argument to the expression on the right of it. Note that in F# the argument passed is the last argument, while in Elixir it is the first.

"hello!" |> capitalize |> console.log

  1. > Hello!

Operators as functions

When parenthesized, operators such as not or + can be included in pipelines or called as if they were functions.

111 |> (+) 222

  1. > 333

(+) 1 2

  1. > 3

Notes and References

  1. Web site: LiveScript Releases. GitHub. 21 February 2021.
  2. Web site: LiveScript contributors page. GitHub. 20 June 2015.
  3. Web site: Chapter 4. How JavaScript Was Created. speakingjs.com. 2017-11-21. 2020-02-27. https://web.archive.org/web/20200227184037/https://speakingjs.com/es5/ch04.html. live.
  4. Web site: LiveScript - a language which compiles to JavaScript.
  5. Web site: prelude.ls - a functionally oriented utility library in LiveScript.