LiveScript is a
functional programming language
In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that ...
that
transpiles to
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
. It was created by
Jeremy Ashkenas
Jeremy Ashkenas is a computer programmer known for the creation and co-creation of the CoffeeScript and LiveScript programming languages respectively, the Backbone.js JavaScript framework and the Underscore.js JavaScript library. While wor ...
—the creator of
CoffeeScript
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehen ...
—along with Satoshi Muramaki, George Zahariev, and many others. (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.)
Syntax
LiveScript is an indirect descendant of
CoffeeScript
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehen ...
. The following
hello world
''Hello'' is a salutation or greeting in the English language. It is first attested in writing from 1826. Early uses
''Hello'', with that spelling, was used in publications in the U.S. as early as the 18 October 1826 edition of the '' Norwich ...
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
Camel case (sometimes stylized as camelCase or CamelCase, also known as camel caps or more formally as medial capitals) is the practice of writing phrases without spaces or punctuation. The format indicates the separation of words with a single c ...
.
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
Snake case (stylized as snake_case) refers to the style of writing in which each space is replaced with an underscore (_) character, and the first letter of each word is written in lowercase. It is a commonly used naming convention in computing, ...
. Dashed naming is however, common in idiomatic LiveScript
Pipes
Like a number of other functional programming languages such as
F# and
Elixir
ELIXIR (the European life-sciences Infrastructure for biological Information) is an initiative that will allow life science laboratories across Europe to share and store their research data as part of an organised network. Its goal is to bring t ...
, 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
ELIXIR (the European life-sciences Infrastructure for biological Information) is an initiative that will allow life science laboratories across Europe to share and store their research data as part of an organised network. Its goal is to bring t ...
it is the first.
"hello!" , > capitalize , > console.log
# > 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
# > 333
(+) 1 2
# > 3
References
External links
*
{{JavaScript
JavaScript programming language family
Software using the MIT license