use Lisp; sub say { if (ref $_[0] eq "ARRAY") { printf "(%s)\n", join ' ', @{$_[0]}; } else { print $_[0], "\n"; } } my $l = Lisp->new; say $l->eval( [':quote', 10] ); say $l->eval( [':label', ':a', 42] ); say $l->eval( [':eq', ':a', 42] ); say $l->eval( [":quote", [1, 2]] ); say $l->eval( [":car", [":quote", [1, 2]]] ); say $l->eval( [":cdr", [":quote", [1, 2]]] ); say $l->eval( [":cons", 1, [":quote", [2, 3]]] ); say $l->eval( [":if", [":eq", 1, 2], "42", "43"] ); say $l->eval( [":label", ":second", [":quote", [":lambda", [":x"], [":car", [":cdr", ":x"]]]]] ); say $l->eval( [":second", [":quote", [1, 2, 3]]] );