(fn factorial [num]
(if (eql num 1)
num
(mult
(factorial (sub num 1))
num)))
(print (factorial 10)) // 3628800
(def arr (list 1 2 3 4 5 6 7 8 9))
(print arr) // 1 2 3 4 5 6 7 8 9
(fn inc [i] (sum i 1))
(def arr2 (map inc arr))
(print arr2) // 2 3 4 5 6 7 8 9 10
(def nums (list 1 2 3 4 5))
(fn sumNums [nums]
(if (eql (length nums) 1)
(get 0 nums)
(sum
(sumNums (sublist nums 0 (sub (length nums) 2)))
(get (sub (length nums) 1) nums))
))
(print (sumNums nums))
go build
to build binary
./glisp run <filepath>
run glisp code from the file
./glisp eval "<glisp_expression>"
evaluate glisp expression from command line
operation | arguments | description | example |
---|---|---|---|
sum | 2...N (num) | add N numbers | (sum 1 2 3) // 6 |
sub | 2...N (num) | chain subtraction for N numbers | (sub 1 2 3) // -4 |
mult | 2...N (num) | multiply N numbers | (mult 1 2 3) // 6 |
div | 2...N (num) | add N numbers | (div 25 5 2) // 2.5 |
if | 3 (bool, successValue, failValue) | if condition call successValue on true and failValue on false | (if true 5 2) // 5 |
def | 2 (name, value) | define a variable | (def a 10) // 10 |
1 any | print arg to console log | (print "hello world") // hello world |
operation | arguments | description | example |
---|---|---|---|
if | 3 (bool, successValue, failValue) | if condition call successValue on true and failValue on false | (if true 5 2) // 5 |
eql | 2 (v1, v2) | check if variables are equal, type including | (eql 10 10) // true (eql "10" 10) // false |
more | 2 (v1, v2) | check if v1 > v2 | (more 10 5) // true |
moreEq | 2 (v1, v2) | check if v1 >= v2 | (moreEq 10 10) // true |
operation | arguments | description | example |
---|---|---|---|
def | 2 (name, value) | define a variable | (def a 10) // 10 |
fn | 3 (name, [args...], exp) | define a function | (fn inc [arg] (sum arg 1)) (inc 5) // 6 |
operation | arguments | description | example |
---|---|---|---|
list | 0...N | create a list value | (list 1 2 3) // (1 2 3) |
map | 2 (fn, list) | you know map | (fn inc [arg] (sum arg 1)) (map inc (list 1 2 3)) // (2 3 4) |
operation | arguments | description | example |
---|---|---|---|
1 any | print arg to console log | (print "hello world") // hello world |
(print (sum (div 100 2 (sum 2 3)) (sub (20 7 3)))) // 20
(def a 5)
(def b (mult a a))
(print (sum a b)) // 30
go test -v ./...