import LIB/default.lm;
type A (ACons( Rc , Rc )) | (AAtom( String ));
del := λ: Hook+HookPriority<1>(: a Rc). (: (
(if (!=( (.2 a) rc-magic-number )) (
(print 'Del\sRc\sNot\sMagic\s_s)(print (.2 a))(print '\n_s)
) (
(let c (.1(open(.1 a))))
(print 'Del\sRc\sIs\sMagic\s_s)(print c)(print '\n_s)
))
) Nil);
print := λ(: a A). (: (
(match a (
()
( (ACons( _ _ )) (
(print 'ACons\n_s)
))
( (AAtom( _ )) (
(print 'AAtom\n_s)
))
))
) Nil);
dirty := λ(: r U64). (: (
(if (!=( r 0_u64 )) (
(let a (-( r 1_u64 )))
(dirty a)
) ())
) Nil);
countf := λ. (: (
(let a (rc(AAtom 'A_s)))
(let b (rc(AAtom 'B_s)))
(if ((let c (rc(AAtom 'C_s))) (branchtrue())) (
(let c2 (rc(AAtom 'C2_s)))
) ())
(if ((let d (rc(AAtom 'D_s))) (branchfalse())) (
(let d2 (rc(AAtom 'D2_s)))
) ())
(let e (rc(ACons( a b ))))
(let f (rc(ACons( a a ))))
) Nil);
main := λ. (: (
(dirty 50_u64)
(countf())
) Nil);