3 use warnings FATAL
=> qw(all);
4 no if $] >= 5.018, warnings
=> "experimental::smartmatch";
5 use feature
qw(switch);
7 our @EXPORT_OK = qw( _pr_str );
9 use types
qw($nil $true $false);
14 my($obj, $print_readably) = @_;
15 my($_r) = (defined $print_readably) ? $print_readably : 1;
18 return '(' . join(' ', map {_pr_str($_, $_r)} @{$obj->{val}}) . ')';
21 return '[' . join(' ', map {_pr_str($_, $_r)} @{$obj->{val}}) . ']';
26 foreach my $key (keys %{ $obj->{val} }) {
27 push(@elems, _pr_str(String->new($key), $_r));
28 push(@elems, _pr_str($obj->{val}->{$key}, $_r));
31 return '{' . join(' ', @elems) . '}';
34 if ($$obj =~ /^\x{029e}/) {
35 return ':' . substr($$obj,1);
41 return '"' . $str . '"';
47 return '<fn* ' . _pr_str($obj->{params}) .
48 ' ' . _pr_str($obj->{ast}) . '>';
51 return '(atom ' . _pr_str($obj->{val}) . ")";
53 when(/^CODE/) { return '<builtin_fn* ' . $obj . '>'; }
54 default { return $$obj; }