3 use warnings FATAL
=> qw(all);
4 use feature
qw(switch);
6 our @EXPORT_OK = qw( _pr_str );
8 use types
qw($nil $true $false);
13 my($obj, $print_readably) = @_;
14 my($_r) = (defined $print_readably) ? $print_readably : 1;
17 return '(' . join(' ', map {_pr_str($_, $_r)} @{$obj->{val}}) . ')';
20 return '[' . join(' ', map {_pr_str($_, $_r)} @{$obj->{val}}) . ']';
24 foreach my $key (keys $obj->{val}) {
25 push(@elems, _pr_str(String->new($key), $_r));
26 push(@elems, _pr_str($obj->{val}->{$key}, $_r));
29 return '{' . join(' ', @elems) . '}';
37 return '"' . $str . '"';
43 return '<fn* ' . _pr_str($obj->{params}) .
44 ' ' . _pr_str($obj->{ast}) . '>';
47 return '(atom ' . _pr_str($obj->{val}) . ")";
49 when(/^CODE/) { return '<builtin_fn* ' . $obj . '>'; }
50 default { return $$obj; }