Crates.io | blisp-repl |
lib.rs | blisp-repl |
version | 0.4.0 |
source | src |
created_at | 2021-03-28 06:31:05.428023 |
updated_at | 2023-03-01 14:57:47.08099 |
description | REPL of BLisp, a lisp like statically typed programing language for no_std. |
homepage | https://ytakano.github.io/blisp/ |
repository | https://github.com/ytakano/blisp |
max_upload_size | |
id | 374550 |
size | 24,540 |
Please visit blisp to see the lanugage detail.
$ cargo install blisp-repl
$ blisp-repl
CTRL-D to exit
>> (+ 0x10 0x20)
48
>> (map (lambda (x) (* x 2)) '(8 9 10))
'(16 18 20)
>> "Hello World!"
"Hello World!"
>> (chars "Hello, World!")
'(`H` `e` `l` `l` `o` `,` ` ` `W` `o` `r` `l` `d` `!`)
$ cargo run ./examples/ex1.lisp
Function definition.
$ cargo run examples/ex1
Finished dev [unoptimized + debuginfo] target(s) in 0.07s
Running `target/debug/blisp-repl examples/ex1.blisp`
(export factorial (n) (Pure (-> (Int) Int))
(factorial' n 1))
(defun factorial' (n total) (Pure (-> (Int Int) Int))
(if (<= n 0)
total
(factorial' (- n 1) (* n total))))
CTRL-D to exit
>> (factorial 10)
3628800
>> (factorial 4)
24
>> (factorial 200)
788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000
>> (+ 1 2)
3
Local function definition.
$ cargo run examples/ex2.blisp
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `target/debug/blisp-repl examples/ex2.blisp`
(export lambda-test (f) (Pure (-> ((Pure (-> (Int) Int))) Int))
(mul2 (f 2)))
(defun mul2 (x) (Pure (-> (Int) Int))
(* 2 x))
CTRL-D to exit
>> (lambda-test (lambda (x) (+ x 80)))
164
>> (lambda-test (lambda (x) (* x x)))
8
Algebraic data type and pattern match.
$ cargo run examples/ex3.blisp
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/blisp-repl examples/ex3.blisp`
(export label-test (x) (Pure (-> ((Option Int)) Int))
(match x
((Some x) x)
(None 0)))
CTRL-D to exit
>> (label-test (Some 10))
10
>> (label-test None)
0
>>
CTRL-D
List and pattern match.
$ cargo run examples/ex4.blisp
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/blisp-repl examples/ex4.blisp`
(export last (x) (Pure (-> ('(Int)) (Option Int)))
(match x
(Nil None)
((Cons n Nil) (Some n))
((Cons _ l) (last l))))
CTRL-D to exit
>> (cdr '(1 2 3))
'(2 3)
>> (cdr '())
Nil
>> (car '(3 5 2))
(Some 3)
>> (car '())
None
>> (last '(5 7 3))
(Some 3)
>> (last '())
None
Tuple and pattern match.
$ cargo run examples/ex5.blisp
Finished dev [unoptimized + debuginfo] target(s) in 0.05s
Running `target/debug/blisp-repl examples/ex5.blisp`
(export first (x) (Pure (-> ([Int Bool]) Int))
(match x
([n _] n)))
(export second (x) (Pure (-> ([Int Bool]) Bool))
(match x
([_ n] n)))
(export none (x) (Pure (-> ([]) Bool))
(match x
([] true)))
CTRL-D to exit
>> (none [])
true
>> (second [13 false])
false
>> (first [63 true])
63
Call Rust's function.
$ cargo run ./examples/ex6.lisp
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `target/debug/blisp-repl ./examples/ex6.lisp`
(export callback (x y z)
(IO (-> (Int Int Int) (Option Int)))
(call-rust x y z))
CTRL-D to exit
>> (callback 10 20 30)
Rust's function is called: n = 6000
(Some 6000)