1 val e
= _export
"f": (int * real * char
-> char
) -> unit
;
2 val _
= e (fn (i
, r
, _
) =>
3 (print (concat
["i = ", Int.toString i
,
4 " r = ", Real.toString r
, "\n"])
6 val g
= _import
"g" public reentrant
: unit
-> unit
;
10 val e
= _export
"f2": (Word8.word -> word array
) -> unit
;
12 Array
.tabulate (10, fn _
=> Word.fromLargeWord (Word8.toLargeWord w
)))
13 val g2
= _import
"g2" public reentrant
: unit
-> word array
;
15 val _
= print (concat
["0wx", Word.toString (Array
.sub (a
, 0)), "\n"])
17 val e
= _export
"f3": (unit
-> unit
) -> unit
;
18 val _
= e (fn () => print
"hello\n");
19 val g3
= _import
"g3" public reentrant
: unit
-> unit
;
22 (* This example demonstrates mutual recursion between C
and SML
. *)
23 val e
= _export
"f4": (int -> unit
) -> unit
;
24 val g4
= _import
"g4" public reentrant
: int -> unit
;
25 val _
= e (fn i
=> if i
= 0 then () else g4 (i
- 1))
28 val (_
, zzzSet
) = _symbol
"zzz" alloc
: (unit
-> int) * (int -> unit
);
30 val g5
= _import
"g5" public
: unit
-> unit
;
33 val _
= print
"success\n"