list-tail-order-to-head-order := λ(: s S). (: (tail(
(let new (close SNil))
(while (non-zero s) (match s (
()
( (SCons( l r )) (tail(
(set new (close(SCons(
(close r)
new
))))
(set s l)
)))
)))
new
)) S[]);
is-variable := λ(: s String). (: (tail(
(let r False_u8)
(match (head-string s) (
()
( 46_u8 ( if (==( s '._s )) () (set r True_u8) ))
( 64_u8 (set r True_u8) )
( 91_u8 (set r True_u8) )
( 63_u8 (set r True_u8) )
( 33_u8 (set r True_u8) )
( 37_u8 (set r True_u8) )
( 61_u8 (set r True_u8) )
( 62_u8 (set r True_u8) )
( 60_u8 (set r True_u8) )
( 47_u8 (set r True_u8) )
( 42_u8 (set r True_u8) )
( 43_u8 (set r True_u8) )
( 45_u8 (set r True_u8) )
( 36_u8 (set r True_u8) )
( 38_u8 (set r True_u8) )
( 124_u8 (set r True_u8) )
( 95_u8 (set r True_u8) )
( 97_u8 (set r True_u8) )
( 98_u8 (set r True_u8) )
( 99_u8 (set r True_u8) )
( 100_u8 (set r True_u8) )
( 101_u8 (set r True_u8) )
( 102_u8 (set r True_u8) )
( 103_u8 (set r True_u8) )
( 104_u8 (set r True_u8) )
( 105_u8 (set r True_u8) )
( 106_u8 (set r True_u8) )
( 107_u8 (set r True_u8) )
( 108_u8 (set r True_u8) )
( 109_u8 (set r True_u8) )
( 110_u8 (set r True_u8) )
( 111_u8 (set r True_u8) )
( 112_u8 (set r True_u8) )
( 113_u8 (set r True_u8) )
( 114_u8 (set r True_u8) )
( 115_u8 (set r True_u8) )
( 116_u8 (set r True_u8) )
( 117_u8 (set r True_u8) )
( 118_u8 (set r True_u8) )
( 119_u8 (set r True_u8) )
( 120_u8 (set r True_u8) )
( 121_u8 (set r True_u8) )
( 122_u8 (set r True_u8) )
(_ ())
))
(==( r True_u8 ))
)) U64);
is-suffix := λ(: base String)(: sfx String). (: (tail(
(let r 0_u64)
(while (head-string base) (tail(
(if (==( base sfx )) (
(set r 1_u64)
) ())
(set base (tail-string base))
)))
r
)) U64);
remove-suffix := λ(: base String)(: sfx String). (: (tail(
(let r SNil)
(while (head-string base) (tail(
(if (==( base sfx )) (
(set base '0_s)
) (
(set r (SCons(
(close r)
(close(SAtom(clone-rope(head-string base))))
)))
))
(set base (tail-string base))
)))
(clone-rope r)
)) String);
to-string := λ(: i U64). (: (tail(
(let r SNil)
(let c 0_u8)
(while (not(==( i 0_u64 ))) (
(let ci (+( (%( i 10_u64 )) 48_u64 )))
(set i (/( i 10_u64 )))
(mov( ci R8 ))
(mov( R8B c ))
(set r (SCons(
(close(SAtom(clone-rope c)))
(close r)
)))
))
(if (non-zero r) () (
(set r (SAtom '0_s))
))
(clone-rope r)
)) String);
uuid-counter := 0_u64;
uuid := λ . (: (tail(
(set uuid-counter (+( uuid-counter 1_u64 )))
(clone-rope (SCons(
(close(SAtom 'uuid__s))
(close(SAtom(dump-i uuid-counter)))
)))
)) String);
dump-i := λ(: i U64). (: (tail(
(let buff SNil)
(let rpt 16_u64)
(while (>( rpt 0_u64 )) (
(match (%( i 16_u64 )) (
()
( 0_u64 (set buff (SCons(
(close (SAtom( '0_s )))
(close buff)
))))
( 1_u64 (set buff (SCons(
(close (SAtom( '1_s )))
(close buff)
))))
( 2_u64 (set buff (SCons(
(close (SAtom( '2_s )))
(close buff)
))))
( 3_u64 (set buff (SCons(
(close (SAtom( '3_s )))
(close buff)
))))
( 4_u64 (set buff (SCons(
(close (SAtom( '4_s )))
(close buff)
))))
( 5_u64 (set buff (SCons(
(close (SAtom( '5_s )))
(close buff)
))))
( 6_u64 (set buff (SCons(
(close (SAtom( '6_s )))
(close buff)
))))
( 7_u64 (set buff (SCons(
(close (SAtom( '7_s )))
(close buff)
))))
( 8_u64 (set buff (SCons(
(close (SAtom( '8_s )))
(close buff)
))))
( 9_u64 (set buff (SCons(
(close (SAtom( '9_s )))
(close buff)
))))
( 10_u64 (set buff (SCons(
(close (SAtom( 'a_s )))
(close buff)
))))
( 11_u64 (set buff (SCons(
(close (SAtom( 'b_s )))
(close buff)
))))
( 12_u64 (set buff (SCons(
(close (SAtom( 'c_s )))
(close buff)
))))
( 13_u64 (set buff (SCons(
(close (SAtom( 'd_s )))
(close buff)
))))
( 14_u64 (set buff (SCons(
(close (SAtom( 'e_s )))
(close buff)
))))
( 15_u64 (set buff (SCons(
(close (SAtom( 'f_s )))
(close buff)
))))
))
(set i (/( i 16_u64 )))
(set rpt (-( rpt 1_u64 )))
))
(clone-rope buff)
)) String);