0000: 0d 0a 2f 2a 2a 0a 20 2a 20 41 75 74 68 6f 72 73 ../**. * Authors
0010: 3a 20 6b 2e 69 6e 61 62 61 0a 20 2a 20 4c 69 63 : k.inaba. * Lic
0020: 65 6e 73 65 3a 20 4e 59 53 4c 20 30 2e 39 39 38 ense: NYSL 0.998
0030: 32 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 6d 6f 2 http://www.kmo
0040: 6e 6f 73 2e 6e 65 74 2f 6e 79 73 6c 2f 0a 20 2a nos.net/nysl/. *
0050: 0a 20 2a 20 52 75 6e 74 69 6d 65 20 6c 69 62 72 . * Runtime libr
0060: 61 72 79 20 66 6f 72 20 50 6f 6c 65 6d 79 20 70 ary for Polemy p
0070: 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 rogramming langu
0080: 61 67 65 2e 0a 20 2a 2f 0a 6d 6f 64 75 6c 65 20 age.. */.module
0090: 70 6f 6c 65 6d 79 2e 72 75 6e 74 69 6d 65 3b 0a polemy.runtime;.
00a0: 69 6d 70 6f 72 74 20 70 6f 6c 65 6d 79 2e 5f 63 import polemy._c
00b0: 6f 6d 6d 6f 6e 3b 0a 69 6d 70 6f 72 74 20 70 6f ommon;.import po
00c0: 6c 65 6d 79 2e 6c 61 79 65 72 3b 0d 0a 69 6d 70 lemy.layer;..imp
00d0: 6f 72 74 20 70 6f 6c 65 6d 79 2e 66 61 69 6c 75 ort polemy.failu
00e0: 72 65 3b 0d 0a 69 6d 70 6f 72 74 20 70 6f 6c 65 re;..import pole
00f0: 6d 79 2e 76 61 6c 75 65 3b 0a 69 6d 70 6f 72 74 my.value;.import
0100: 20 70 6f 6c 65 6d 79 2e 65 76 61 6c 3b 0a 69 6d polemy.eval;.im
0110: 70 6f 72 74 20 73 74 64 2e 73 74 64 69 6f 3b 0a port std.stdio;.
0120: 0d 0a 2f 2f 2f 20 65 6e 72 6f 6c 6c 20 74 68 65 ../// enroll the
0130: 20 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e native implemen
0140: 74 61 74 69 6f 6e 73 20 6f 66 20 70 72 69 6d 69 tations of primi
0150: 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 73 0d 0a tive functions..
0160: 0d 0a 76 6f 69 64 20 65 6e 72 6f 6c 6c 52 75 6e ..void enrollRun
0170: 74 69 6d 65 4c 69 62 72 61 72 79 28 20 45 76 61 timeLibrary( Eva
0180: 6c 75 61 74 6f 72 20 65 20 29 0d 0a 7b 0d 0a 09 luator e )..{...
0190: 2f 2f 20 61 72 69 74 68 6d 65 74 69 63 20 6f 70 // arithmetic op
01a0: 65 72 61 74 69 6f 6e 73 0d 0a 09 65 2e 61 64 64 erations...e.add
01b0: 50 72 69 6d 69 74 69 76 65 28 22 2b 22 2c 20 20 Primitive("+",
01c0: 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 09 28 ValueLayer,....(
01d0: 49 6e 74 56 61 6c 75 65 20 6c 68 73 2c 20 49 6e IntValue lhs, In
01e0: 74 56 61 6c 75 65 20 72 68 73 29 7b 72 65 74 75 tValue rhs){retu
01f0: 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c 75 65 28 rn new IntValue(
0200: 6c 68 73 2e 64 61 74 61 20 2b 20 72 68 73 2e 64 lhs.data + rhs.d
0210: 61 74 61 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 ata);} );...e.ad
0220: 64 50 72 69 6d 69 74 69 76 65 28 22 2d 22 2c 20 dPrimitive("-",
0230: 20 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 09 ValueLayer,....
0240: 28 49 6e 74 56 61 6c 75 65 20 6c 68 73 2c 20 49 (IntValue lhs, I
0250: 6e 74 56 61 6c 75 65 20 72 68 73 29 7b 72 65 74 ntValue rhs){ret
0260: 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c 75 65 urn new IntValue
0270: 28 6c 68 73 2e 64 61 74 61 20 2d 20 72 68 73 2e (lhs.data - rhs.
0280: 64 61 74 61 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 data);} );...e.a
0290: 64 64 50 72 69 6d 69 74 69 76 65 28 22 2a 22 2c ddPrimitive("*",
02a0: 20 20 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 ValueLayer,...
02b0: 09 28 49 6e 74 56 61 6c 75 65 20 6c 68 73 2c 20 .(IntValue lhs,
02c0: 49 6e 74 56 61 6c 75 65 20 72 68 73 29 7b 72 65 IntValue rhs){re
02d0: 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c 75 turn new IntValu
02e0: 65 28 6c 68 73 2e 64 61 74 61 20 2a 20 72 68 73 e(lhs.data * rhs
02f0: 2e 64 61 74 61 29 3b 7d 20 29 3b 0d 0a 09 65 2e .data);} );...e.
0300: 61 64 64 50 72 69 6d 69 74 69 76 65 28 22 2f 22 addPrimitive("/"
0310: 2c 20 20 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a , ValueLayer,..
0320: 09 09 28 49 6e 74 56 61 6c 75 65 20 6c 68 73 2c ..(IntValue lhs,
0330: 20 49 6e 74 56 61 6c 75 65 20 72 68 73 29 7b 0d IntValue rhs){.
0340: 0a 09 09 09 69 66 28 20 72 68 73 2e 64 61 74 61 ....if( rhs.data
0350: 20 3d 3d 20 30 20 29 0d 0a 09 09 09 09 74 68 72 == 0 )......thr
0360: 6f 77 20 67 65 6e 65 78 21 52 75 6e 74 69 6d 65 ow genex!Runtime
0370: 45 78 63 65 70 74 69 6f 6e 28 22 64 69 76 69 73 Exception("divis
0380: 69 6f 6e 20 62 79 20 30 22 29 3b 0d 0a 09 09 09 ion by 0");.....
0390: 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 return new IntVa
03a0: 6c 75 65 28 6c 68 73 2e 64 61 74 61 20 2f 20 72 lue(lhs.data / r
03b0: 68 73 2e 64 61 74 61 29 3b 0d 0a 09 09 7d 29 3b hs.data);....});
03c0: 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 74 69 76 ...e.addPrimitiv
03d0: 65 28 22 25 22 2c 20 20 56 61 6c 75 65 4c 61 79 e("%", ValueLay
03e0: 65 72 2c 0d 0a 09 09 28 49 6e 74 56 61 6c 75 65 er,....(IntValue
03f0: 20 6c 68 73 2c 20 49 6e 74 56 61 6c 75 65 20 72 lhs, IntValue r
0400: 68 73 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 hs){return new I
0410: 6e 74 56 61 6c 75 65 28 6c 68 73 2e 64 61 74 61 ntValue(lhs.data
0420: 20 25 20 72 68 73 2e 64 61 74 61 29 3b 7d 20 29 % rhs.data);} )
0430: 3b 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 74 69 ;...e.addPrimiti
0440: 76 65 28 22 7c 7c 22 2c 20 56 61 6c 75 65 4c 61 ve("||", ValueLa
0450: 79 65 72 2c 0d 0a 09 09 28 49 6e 74 56 61 6c 75 yer,....(IntValu
0460: 65 20 6c 68 73 2c 20 49 6e 74 56 61 6c 75 65 20 e lhs, IntValue
0470: 72 68 73 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 rhs){return new
0480: 49 6e 74 56 61 6c 75 65 28 6c 68 73 2e 64 61 74 IntValue(lhs.dat
0490: 61 21 3d 30 20 7c 7c 20 72 68 73 2e 64 61 74 61 a!=0 || rhs.data
04a0: 21 3d 30 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 !=0);} );...e.ad
04b0: 64 50 72 69 6d 69 74 69 76 65 28 22 26 26 22 2c dPrimitive("&&",
04c0: 20 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 09 ValueLayer,....
04d0: 28 49 6e 74 56 61 6c 75 65 20 6c 68 73 2c 20 49 (IntValue lhs, I
04e0: 6e 74 56 61 6c 75 65 20 72 68 73 29 7b 72 65 74 ntValue rhs){ret
04f0: 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c 75 65 urn new IntValue
0500: 28 6c 68 73 2e 64 61 74 61 21 3d 30 20 26 26 20 (lhs.data!=0 &&
0510: 72 68 73 2e 64 61 74 61 21 3d 30 29 3b 7d 20 29 rhs.data!=0);} )
0520: 3b 0d 0a 09 2f 2f 20 73 74 72 69 6e 67 20 6f 70 ;...// string op
0530: 65 72 61 74 69 6f 6e 28 73 29 0d 0a 09 65 2e 61 eration(s)...e.a
0540: 64 64 50 72 69 6d 69 74 69 76 65 28 22 7e 22 2c ddPrimitive("~",
0550: 20 20 56 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 ValueLayer,...
0560: 09 28 56 61 6c 75 65 20 6c 68 73 2c 20 56 61 6c .(Value lhs, Val
0570: 75 65 20 72 68 73 29 7b 72 65 74 75 72 6e 20 6e ue rhs){return n
0580: 65 77 20 53 74 72 56 61 6c 75 65 28 6c 68 73 2e ew StrValue(lhs.
0590: 74 6f 53 74 72 69 6e 67 20 7e 20 72 68 73 2e 74 toString ~ rhs.t
05a0: 6f 53 74 72 69 6e 67 29 3b 7d 20 29 3b 0d 0a 09 oString);} );...
05b0: 2f 2f 20 63 6f 6d 70 61 72 69 73 6f 6e 0d 0a 09 // comparison...
05c0: 65 2e 61 64 64 50 72 69 6d 69 74 69 76 65 28 22 e.addPrimitive("
05d0: 3c 22 2c 20 20 56 61 6c 75 65 4c 61 79 65 72 2c <", ValueLayer,
05e0: 20 28 56 61 6c 75 65 20 6c 68 73 2c 20 56 61 6c (Value lhs, Val
05f0: 75 65 20 72 68 73 29 7b 72 65 74 75 72 6e 20 6e ue rhs){return n
0600: 65 77 20 49 6e 74 56 61 6c 75 65 28 6c 68 73 20 ew IntValue(lhs
0610: 3c 20 72 68 73 29 3b 7d 20 29 3b 0d 0a 09 65 2e < rhs);} );...e.
0620: 61 64 64 50 72 69 6d 69 74 69 76 65 28 22 3e 22 addPrimitive(">"
0630: 2c 20 20 56 61 6c 75 65 4c 61 79 65 72 2c 20 28 , ValueLayer, (
0640: 56 61 6c 75 65 20 6c 68 73 2c 20 56 61 6c 75 65 Value lhs, Value
0650: 20 72 68 73 29 7b 72 65 74 75 72 6e 20 6e 65 77 rhs){return new
0660: 20 49 6e 74 56 61 6c 75 65 28 6c 68 73 20 3e 20 IntValue(lhs >
0670: 72 68 73 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 rhs);} );...e.ad
0680: 64 50 72 69 6d 69 74 69 76 65 28 22 3c 3d 22 2c dPrimitive("<=",
0690: 20 56 61 6c 75 65 4c 61 79 65 72 2c 20 28 56 61 ValueLayer, (Va
06a0: 6c 75 65 20 6c 68 73 2c 20 56 61 6c 75 65 20 72 lue lhs, Value r
06b0: 68 73 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 hs){return new I
06c0: 6e 74 56 61 6c 75 65 28 6c 68 73 20 3c 3d 20 72 ntValue(lhs <= r
06d0: 68 73 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 64 hs);} );...e.add
06e0: 50 72 69 6d 69 74 69 76 65 28 22 3e 3d 22 2c 20 Primitive(">=",
06f0: 56 61 6c 75 65 4c 61 79 65 72 2c 20 28 56 61 6c ValueLayer, (Val
0700: 75 65 20 6c 68 73 2c 20 56 61 6c 75 65 20 72 68 ue lhs, Value rh
0710: 73 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 6e s){return new In
0720: 74 56 61 6c 75 65 28 6c 68 73 20 3e 3d 20 72 68 tValue(lhs >= rh
0730: 73 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 64 50 s);} );...e.addP
0740: 72 69 6d 69 74 69 76 65 28 22 3d 3d 22 2c 20 56 rimitive("==", V
0750: 61 6c 75 65 4c 61 79 65 72 2c 20 28 56 61 6c 75 alueLayer, (Valu
0760: 65 20 6c 68 73 2c 20 56 61 6c 75 65 20 72 68 73 e lhs, Value rhs
0770: 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 ){return new Int
0780: 56 61 6c 75 65 28 6c 68 73 20 3d 3d 20 72 68 73 Value(lhs == rhs
0790: 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 64 50 72 );} );...e.addPr
07a0: 69 6d 69 74 69 76 65 28 22 21 3d 22 2c 20 56 61 imitive("!=", Va
07b0: 6c 75 65 4c 61 79 65 72 2c 20 28 56 61 6c 75 65 lueLayer, (Value
07c0: 20 6c 68 73 2c 20 56 61 6c 75 65 20 72 68 73 29 lhs, Value rhs)
07d0: 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 {return new IntV
07e0: 61 6c 75 65 28 6c 68 73 20 21 3d 20 72 68 73 29 alue(lhs != rhs)
07f0: 3b 7d 20 29 3b 0d 0a 09 2f 2f 20 63 6f 6e 74 72 ;} );...// contr
0800: 6f 6c 20 66 6c 6f 77 0d 0a 09 65 2e 61 64 64 50 ol flow...e.addP
0810: 72 69 6d 69 74 69 76 65 28 22 69 66 22 2c 20 56 rimitive("if", V
0820: 61 6c 75 65 4c 61 79 65 72 2c 20 28 49 6e 74 56 alueLayer, (IntV
0830: 61 6c 75 65 20 78 2c 20 46 75 6e 56 61 6c 75 65 alue x, FunValue
0840: 20 66 74 2c 20 46 75 6e 56 61 6c 75 65 20 66 65 ft, FunValue fe
0850: 29 7b 0d 0a 09 09 61 75 74 6f 20 74 6f 52 75 6e ){....auto toRun
0860: 20 3d 20 28 78 2e 64 61 74 61 3d 3d 30 20 3f 20 = (x.data==0 ?
0870: 66 65 20 3a 20 66 74 29 3b 0d 0a 09 09 72 65 74 fe : ft);....ret
0880: 75 72 6e 20 74 6f 52 75 6e 2e 69 6e 76 6f 6b 65 urn toRun.invoke
0890: 28 56 61 6c 75 65 4c 61 79 65 72 2c 20 74 6f 52 (ValueLayer, toR
08a0: 75 6e 2e 64 65 66 69 6e 69 74 69 6f 6e 43 6f 6e un.definitionCon
08b0: 74 65 78 74 28 29 2c 20 6e 75 6c 6c 29 3b 0d 0a text(), null);..
08c0: 09 7d 29 3b 0d 0a 09 2f 2f 20 74 79 70 65 20 74 .});...// type t
08d0: 65 73 74 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 est...e.addPrimi
08e0: 74 69 76 65 28 22 5f 69 73 69 6e 74 22 2c 20 56 tive("_isint", V
08f0: 61 6c 75 65 4c 61 79 65 72 2c 0d 0a 09 09 28 56 alueLayer,....(V
0900: 61 6c 75 65 20 76 29 7b 72 65 74 75 72 6e 20 6e alue v){return n
0910: 65 77 20 49 6e 74 56 61 6c 75 65 28 63 61 73 74 ew IntValue(cast
0920: 28 49 6e 74 56 61 6c 75 65 29 76 20 21 69 73 20 (IntValue)v !is
0930: 6e 75 6c 6c 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 null);} );...e.a
0940: 64 64 50 72 69 6d 69 74 69 76 65 28 22 5f 69 73 ddPrimitive("_is
0950: 73 74 72 22 2c 20 56 61 6c 75 65 4c 61 79 65 72 str", ValueLayer
0960: 2c 0d 0a 09 09 28 56 61 6c 75 65 20 76 29 7b 72 ,....(Value v){r
0970: 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c eturn new IntVal
0980: 75 65 28 63 61 73 74 28 53 74 72 56 61 6c 75 65 ue(cast(StrValue
0990: 29 76 20 21 69 73 20 6e 75 6c 6c 29 3b 7d 20 29 )v !is null);} )
09a0: 3b 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 74 69 ;...e.addPrimiti
09b0: 76 65 28 22 5f 69 73 66 75 6e 22 2c 20 56 61 6c ve("_isfun", Val
09c0: 75 65 4c 61 79 65 72 2c 0d 0a 09 09 28 56 61 6c ueLayer,....(Val
09d0: 75 65 20 76 29 7b 72 65 74 75 72 6e 20 6e 65 77 ue v){return new
09e0: 20 49 6e 74 56 61 6c 75 65 28 63 61 73 74 28 46 IntValue(cast(F
09f0: 75 6e 56 61 6c 75 65 29 76 20 21 69 73 20 6e 75 unValue)v !is nu
0a00: 6c 6c 29 3b 7d 20 29 3b 0d 0a 09 65 2e 61 64 64 ll);} );...e.add
0a10: 50 72 69 6d 69 74 69 76 65 28 22 5f 69 73 75 6e Primitive("_isun
0a20: 64 65 66 69 6e 65 64 22 2c 20 56 61 6c 75 65 4c defined", ValueL
0a30: 61 79 65 72 2c 0d 0a 09 09 28 56 61 6c 75 65 20 ayer,....(Value
0a40: 76 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 6e v){return new In
0a50: 74 56 61 6c 75 65 28 63 61 73 74 28 55 6e 64 65 tValue(cast(Unde
0a60: 66 69 6e 65 64 56 61 6c 75 65 29 76 20 21 69 73 finedValue)v !is
0a70: 20 6e 75 6c 6c 29 3b 7d 20 29 3b 0d 0a 09 65 2e null);} );...e.
0a80: 61 64 64 50 72 69 6d 69 74 69 76 65 28 22 5f 69 addPrimitive("_i
0a90: 73 74 61 62 6c 65 22 2c 20 56 61 6c 75 65 4c 61 stable", ValueLa
0aa0: 79 65 72 2c 0d 0a 09 09 28 56 61 6c 75 65 20 76 yer,....(Value v
0ab0: 29 7b 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 ){return new Int
0ac0: 56 61 6c 75 65 28 63 61 73 74 28 54 61 62 6c 65 Value(cast(Table
0ad0: 29 76 20 21 69 73 20 6e 75 6c 6c 29 3b 7d 20 29 )v !is null);} )
0ae0: 3b 0d 0a 09 2f 2f 20 74 61 62 6c 65 0d 0a 09 65 ;...// table...e
0af0: 2e 61 64 64 50 72 69 6d 69 74 69 76 65 28 22 2e .addPrimitive(".
0b00: 22 2c 20 56 61 6c 75 65 4c 61 79 65 72 2c 20 28 ", ValueLayer, (
0b10: 54 61 62 6c 65 20 74 2c 20 53 74 72 56 61 6c 75 Table t, StrValu
0b20: 65 20 73 29 7b 0d 0a 09 09 72 65 74 75 72 6e 20 e s){....return
0b30: 28 74 2e 68 61 73 28 73 2e 64 61 74 61 2c 20 56 (t.has(s.data, V
0b40: 61 6c 75 65 4c 61 79 65 72 29 20 3f 20 74 2e 67 alueLayer) ? t.g
0b50: 65 74 28 73 2e 64 61 74 61 2c 20 56 61 6c 75 65 et(s.data, Value
0b60: 4c 61 79 65 72 29 20 3a 20 6e 65 77 20 55 6e 64 Layer) : new Und
0b70: 65 66 69 6e 65 64 56 61 6c 75 65 29 3b 0d 0a 09 efinedValue);...
0b80: 7d 29 3b 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 });...e.addPrimi
0b90: 74 69 76 65 28 22 2e 3f 22 2c 20 56 61 6c 75 65 tive(".?", Value
0ba0: 4c 61 79 65 72 2c 20 28 54 61 62 6c 65 20 74 2c Layer, (Table t,
0bb0: 20 53 74 72 56 61 6c 75 65 20 73 29 7b 0d 0a 09 StrValue s){...
0bc0: 09 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 .return new IntV
0bd0: 61 6c 75 65 28 74 2e 68 61 73 28 73 2e 64 61 74 alue(t.has(s.dat
0be0: 61 2c 20 56 61 6c 75 65 4c 61 79 65 72 29 29 3b a, ValueLayer));
0bf0: 0d 0a 09 7d 29 3b 0d 0a 09 65 2e 61 64 64 50 72 ...});...e.addPr
0c00: 69 6d 69 74 69 76 65 28 22 2e 3d 22 2c 20 56 61 imitive(".=", Va
0c10: 6c 75 65 4c 61 79 65 72 2c 20 28 54 61 62 6c 65 lueLayer, (Table
0c20: 20 74 2c 20 53 74 72 56 61 6c 75 65 20 73 2c 20 t, StrValue s,
0c30: 56 61 6c 75 65 20 76 29 7b 0d 0a 09 09 61 75 74 Value v){....aut
0c40: 6f 20 74 32 20 3d 20 6e 65 77 20 54 61 62 6c 65 o t2 = new Table
0c50: 28 74 2c 20 54 61 62 6c 65 2e 4b 69 6e 64 2e 4e (t, Table.Kind.N
0c60: 6f 74 50 72 6f 70 61 67 61 74 65 53 65 74 29 3b otPropagateSet);
0c70: 0d 0a 09 09 74 32 2e 73 65 74 28 73 2e 64 61 74 ....t2.set(s.dat
0c80: 61 2c 20 56 61 6c 75 65 4c 61 79 65 72 2c 20 76 a, ValueLayer, v
0c90: 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 74 32 3b );....return t2;
0ca0: 0d 0a 09 7d 29 3b 0d 0a 09 65 2e 61 64 64 50 72 ...});...e.addPr
0cb0: 69 6d 69 74 69 76 65 28 22 7b 7d 22 2c 20 56 61 imitive("{}", Va
0cc0: 6c 75 65 4c 61 79 65 72 2c 20 28 29 7b 0d 0a 09 lueLayer, (){...
0cd0: 09 72 65 74 75 72 6e 20 6e 65 77 20 54 61 62 6c .return new Tabl
0ce0: 65 3b 0d 0a 09 7d 29 3b 0d 0a 09 2f 2f 20 49 4f e;...});...// IO
0cf0: 0d 0a 09 65 2e 61 64 64 50 72 69 6d 69 74 69 76 ...e.addPrimitiv
0d00: 65 28 22 70 72 69 6e 74 22 2c 20 56 61 6c 75 65 e("print", Value
0d10: 4c 61 79 65 72 2c 20 28 56 61 6c 75 65 20 61 29 Layer, (Value a)
0d20: 7b 20 77 72 69 74 65 6c 6e 28 61 29 3b 20 72 65 { writeln(a); re
0d30: 74 75 72 6e 20 6e 65 77 20 49 6e 74 56 61 6c 75 turn new IntValu
0d40: 65 28 30 29 3b 20 7d 29 3b 0d 0a 7d 0d 0a e(0); });..}..