Output on Terminal
> (lfe_io:format "hello world~n" ())
lfe_io:format function is use to write output on terminal. It can takes one or two arguments as a lists. The first one is nearly always a list written as a string between " ".
~n is replaced by a new line.
lfe_io:format function itself returns the atom ok
(lfe_io:format "this outputs one LFE term: ~w~n" '(hello))
This list is printed out as it is , however each ~w is replaced by a argument taken in order from the second list.
lfe> (lfe_io:format "this outputs one LFE term: ~w~n" '(beamvm)) this outputs one LFE term: beamvm ok lfe> (lfe_io:format "this takes two LFE terms: ~w ~w~n" '(beamvm lfe)) this takes two LFE terms: beamvm lfe
Lists in LFE are surrounded by "(" and ")".
lfe> (set (cons initial remaining) '(2 4 6 8 10)) (2 4 6 8 10) lfe> initial 2 lfe> remaining (4 6 8 10)
cons is a constructor which can be used as a pattern to match against lists.
set allows you to define variables using patterns.
Using cons you can separate the first element of the list from the rest of list .
If you want to give a literal list you need to quote it with '. It is same as atoms.
Nesting of cons
lfe> (set (cons e1 (cons e2 r)) '(1 2 3 4 5 6 7)) (1 2 3 4 5 6 7) lfe> e1 1 lfe> e2 2 lfe> r (3 4 5 6 7)
If you try to get more elements from the list than it contains you will get an error.
List with no Element
lfe> (set (cons p (cons q r)) '(10 20)) (10 20) lfe> p 10 lfe> q 20 lfe> r ()
It is the special case of the list with no elements ().
cons can be use to "extract" head and tail values of a list while matching.
lfe> (set (cons head tail) (list 'C 'C++ 'JAVA)) (C C++ JAVA) lfe> head C lfe> tail (C++ JAVA) lfe> (cons 'C# tail) (C# C++ JAVA)
Code tested on Ubuntu 20.04