-
Notifications
You must be signed in to change notification settings - Fork 0
/
stdlib.sc
43 lines (36 loc) · 944 Bytes
/
stdlib.sc
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
using import String
using import Array
using import .common
import .utils
spice register-scope (scope program)
scope as:= Scope
let expr = (sc_expression_new)
for k f in scope
let name = (k as Symbol as string)
sc_expression_append expr
spice-quote
'set program.functions (String [name])
imply f CWrapper
expr
run-stage;
let C = (import .radlib.libc)
vvv bind global-scope
do
fn print (stack)
let msg = ('pop stack)
C.stdio.printf "%s\n" ((utils.extract-as-tag msg 'String) as rawstring)
;
fn tostring (stack)
let arg = ('pop stack)
'append stack
LangValue.String
'apply arg
inline (T val)
String (tostring val)
;
locals;
fn register (program)
register-scope global-scope program
do
let CWrapper register
locals;