summaryrefslogtreecommitdiff
path: root/primer.py
blob: b2235502df9d3e4e44f29761cd0a28c34477b485 (plain)
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
import actinide
import actinide.types as t
import actinide.builtin as b
import actinide.evaluator as e

session = actinide.Session()
program = session.read("""
(begin
    1
    1.0
    "Hello"
    (define (a b)
        (values 1 2.2 "three" a b))
    (define (pp) (pp))

    (print (a "foo"))
    (print (eval (list (symbol "a") "bar")))
    (print 0 (values 1 2 3) 4 5)
    (pp))
""")

def begin(*args):
    if args:
        return args[-1]
    return None

def values(*args):
    return args

session.bind_builtin(values)
session.bind_void(print)
session.bind_fn(begin)
session.bind_fn(t.list)
session.bind_fn(session.symbol)
session.bind_builtin(session.eval)

session.eval(program)