%% Tests %% A test of cycles. [localvar ident(foo) [localvar ident(bar) [[bind ident(foo) [record literal(person) [literal(name) ident(foo)]]] [bind ident(bar) [record literal(person) [literal(name) ident(bar)]]] [bind ident(foo) ident(bar)]]]] %% Another test of cycles. [localvar ident(foo) [localvar ident(bar) [[bind ident(foo) [record literal(person) [literal(name) ident(bar)]]] [bind ident(bar) [record literal(person) [literal(name) ident(foo)]]] [bind ident(foo) ident(bar)]]]] %% Test of procedures, with a closure. [localvar ident(foo) [localvar ident(bar) [localvar ident(quux) [bind ident(bar) [subr [ident(baz)] [bind [record literal(person) [literal(age) ident(foo)]] ident(baz)]] [apply ident(bar) ident(quux)] [bind [record literal(person) [literal(age) literal(40)]] ident(quux)] %% We'll check whether foo has been assigned the value by %% raising an exception here [bind literal(42) ident(foo)]]]]] %% Test a successful case match. [localvar ident(foo) [localvar ident(result) [[bind ident(foo) [record literal(bar) [literal(baz) literal(42)] [literal(quux) literal(314)]]] [casecheck ident(foo) [record literal(bar) [literal(baz) ident(fortytwo)] [literal(quux) ident(pitimes100)]] [bind ident(result) ident(fortytwo)] %% if matched [bind ident(result) literal(314)]] %% if not matched %% This will raise an exception if result is not 42 [bind ident(result) literal(42)] [donothing]]]] %% Test a failing case match. [localvar ident(foo) [localvar ident(bar) [localvar ident(baz) [[bind ident(foo) ident(bar)] [bind literal(20) ident(bar)] [casecheck ident(foo) literal(21) [bind ident(baz) literal(t)] [bind ident(baz) literal(f)]] %% Check [bind ident(baz) literal(f)] [donothing]]]]] %% Test a successful if. [localvar ident(foo) [localvar ident(result) [[bind ident(foo) literal(t)] [ifcheck ident(foo) [bind ident(result) literal(t)] [bind ident(result) literal(f)]] %% Check [bind ident(result) literal(t)]]]] %% Test a failing if. [localvar ident(foo) [localvar ident(result) [[bind ident(foo) literal(f)] [ifcheck ident(foo) [bind ident(result) literal(t)] [bind ident(result) literal(f)]] %% Check [bind ident(result) literal(f)]]]] %% One more case check, this time with feature names as identifiers. [localvar ident(foo) [localvar ident(bar) [localvar ident(baz) [localvar ident(result) [[bind ident(foo) literal(person)] [bind ident(bar) literal(age)] [bind ident(baz) [record literal(person) [literal(age) literal(25)]]] [casecheck ident(baz) [record ident(foo) [ident(bar) ident(quux)]] [bind ident(result) ident(quux)] [bind ident(result) literal(f)]] %% Check [bind ident(result) literal(25)]]]]]]