+- fix fixnum<< vop on x86 and ppc\r
- need line and paragraph spacing\r
- update HTML stream\r
- help cross-referencing\r
- contrib/postgresql/ -- PostgreSQL binding (Doug Coleman)
+- contrib/random-tester/ -- Random compiler tester (Doug Coleman)
+
- contrib/space-invaders/ -- Intel 8080-based Space Invaders arcade
machine emulator (Chris Double)
: inc ( var -- ) [ 1+ ] change ; inline
+: counter ( var -- n )
+ global [ [ [ 0 ] unless* dup 1+ >fixnum ] change ] bind ;
+
: dec ( var -- ) [ 1- ] change ; inline
: bind ( namespace quot -- ) swap >n call n> drop ; inline
TUPLE: value recursion uid ;
C: value ( -- value )
- gensym over set-value-uid
+ \ value counter over set-value-uid
recursive-state get over set-value-recursion ;
M: value = eq? ;
-M: value hashcode value-uid hashcode ;
+M: value hashcode value-uid ;
TUPLE: literal value ;
: values% ( prefix values -- )
[
swap %
- dup literal? [ literal-value ] [ value-uid ] if
- unparse %
+ dup literal? [
+ literal-value unparse %
+ ] [
+ "@" % value-uid #
+ ] if
] each-with ;
: effect-str ( node -- str )
M: word literalize <wrapper> ;
: gensym ( -- word )
- "G:"
- global [ \ gensym dup inc get ] bind
- number>string append f <word> dup init-word ;
+ [ "G:" % \ gensym counter # ] "" make
+ f <word> dup init-word ;
0 \ gensym set-global