1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
# take the first n objects from a list
take = (n, [x, ...xs]:list) -->
| n <= 0 => []
| empty list => []
| otherwise => [x] ++ take n - 1, xs
take 2, [1, 2, 3, 4, 5]
# Curried functions
take-three = take 3
take-three [6, 7, 8, 9, 10]
# Function composition
last-three = reverse >> take-three >> reverse
last-three [1 to 8]
# List comprehensions and piping
const t1 =
* id: 1
name: 'george'
* id: 2
name: 'mike'
* id: 3
name: 'donald'
const t2 =
* id: 2
age: 21
* id: 1
age: 20
* id: 3
age: 26
[{id:id1, name, age}
for {id:id1, name} in t1
for {id:id2, age} in t2
where id1 is id2]
|> sort-by \id
|> JSON.stringify
~function add x, y
@result = x + y
class A
(num) ->
@x = num
property: 1
method: (y) ->
@x + @property + y
a = new A 3
a.x #=> 3
a.property #=> 1
a.method 6 #=> 10
f = !-> 2
g = (x) !-> x + 2
result = switch 'test'
case 'blatant'
'effort'
fallthrough
case 'at'
'increasing'
fallthrough
case 'relevance'
void
|