LiveScript (programming language)

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])

LiveScript
Paradigmmulti-paradigm, functional, object-oriented
Designed byJeremy Ashkenas, Satoshi Murakami, George Zahariev
DeveloperJeremy Ashkenas, Satoshi Murakami, George Zahariev
First appeared2011; 14 years ago (2011)
Stable release
LiveScript 1.6.1 / 14 July 2020; 4 years ago (2020-07-14)[1]
Typing disciplinedynamic, weak
OSCross-platform
LicenseMIT
Filename extensions.ls
Websitelivescript.net
Influenced by
JavaScript, Haskell, CoffeeScript, F#

Syntax

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

<syntaxhighlight lang="livescript"> hello = ->

 console.log 'hello, world!'

</syntaxhighlight>

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.

<syntaxhighlight lang="livescript"> hello-world = ->

 console.log 'Hello, World!'

</syntaxhighlight>

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

<syntaxhighlight lang="output"> hello-world! helloWorld! </syntaxhighlight>

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.

<syntaxhighlight lang="livescript"> "hello!" |> capitalize |> console.log

  1. > Hello!

</syntaxhighlight>

Operators as functions

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

<syntaxhighlight lang="livescript"> 111 |> (+) 222

  1. > 333

(+) 1 2

  1. > 3

</syntaxhighlight>

References

  1. ^ "LiveScript Releases". GitHub. Retrieved 21 February 2021.
  2. ^ "LiveScript contributors page". GitHub. Retrieved 20 June 2015.
  3. ^ "Chapter 4. How JavaScript Was Created". speakingjs.com. Archived from the original on 2020-02-27. Retrieved 2017-11-21.
  4. ^ "LiveScript - a language which compiles to JavaScript".
  5. ^ "prelude.ls - a functionally oriented utility library in LiveScript".

External links

  • No URL found. Please specify a URL here or add one to Wikidata.