LiveScript

From Wikipedia, the free encyclopedia
Jump to: navigation, search
LiveScript
Paradigm multi-paradigm, functional, object-oriented
Designed by Jeremy Ashkenas, Satoshi Murakami, George Zahariev
Developer Jeremy Ashkenas, Satoshi Murakami, George Zahariev
First appeared 2011; 6 years ago (2011)
Stable release
LiveScript 1.5.0 / 15 May 2016; 17 months ago (2016-05-15)[1]
Typing discipline dynamic, weak
OS Cross-platform
License MIT
Filename extensions .ls
Website livescript.net
Influenced by
JavaScript, Haskell, CoffeeScript, F#

LiveScript is a functional language that compiles to JavaScript. It was created by Jeremy Ashkenas—the creator of CoffeeScript—along with Satoshi Muramaki, George Zahariev, and many others.[2] Notably, LiveScript was briefly the name of JavaScript in 1990s.[3]

Syntax[edit]

LiveScript is an indirect descendant of and partly compatible with CoffeeScript.[4] The following is a fully Coffeescript-compatible hello-world example of LiveScript syntax.

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[edit]

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

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 camelcase explicitly or using snakecase. Dashed naming is however, common in idiomatic LiveScript[5]

Pipes[edit]

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
# > Hello!

Operators as functions[edit]

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

111 |> (+) 222
# > 333

(+) 1 2
# > 3

References[edit]

  1. ^ "LiveScript Releases". Retrieved 3 March 2017. 
  2. ^ "LiveScript contributors page". Retrieved 20 June 2015. 
  3. ^ "W3 Web Education Community Group". Retrieved 20 June 2015. 
  4. ^ http://livescript.net/
  5. ^ http://www.preludels.com/

External links[edit]