diff options
| author | Joel Martin <github@martintribe.org> | 2014-04-19 15:12:13 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-04-19 15:12:13 -0500 |
| commit | b5dedee06b3a8fbec962fe23b0d474d7cf037a3d (patch) | |
| tree | 78517cde6624ebd3303627d62c19f48d199e6193 /perl/types.pm | |
| parent | 9e5b215158a40ad983cbc22464761524845dd9bf (diff) | |
| download | mal-b5dedee06b3a8fbec962fe23b0d474d7cf037a3d.tar.gz mal-b5dedee06b3a8fbec962fe23b0d474d7cf037a3d.zip | |
Perl: add step1_read_print, types.
Diffstat (limited to 'perl/types.pm')
| -rw-r--r-- | perl/types.pm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/perl/types.pm b/perl/types.pm new file mode 100644 index 0000000..500a1d3 --- /dev/null +++ b/perl/types.pm @@ -0,0 +1,55 @@ +package types; +use strict; +use warnings; +use Exporter 'import'; +our @EXPORT_OK = qw( $nil $true $false); + +{ + package Nil; + #sub new { my $class = shift; bless {type=>'nil'} => $class } + sub new { my $class = shift; my $s = 'nil'; bless \$s => $class } +} +{ + package True; + sub new { my $class = shift; my $s = 'true'; bless \$s => $class } +} +{ + package False; + sub new { my $class = shift; my $s = 'false'; bless \$s => $class } +} + +our $nil = Nil->new(); +our $true = True->new(); +our $false = False->new(); + +{ + package Integer; + sub new { my $class = shift; bless \$_[0] => $class } +} + +{ + package Symbol; + sub new { my $class = shift; bless \$_[0] => $class } +} + +{ + package String; + sub new { my $class = shift; bless \$_[0] => $class } +} + +{ + package List; + sub new { my $class = shift; bless $_[0], $class } +} + +{ + package Vector; + sub new { my $class = shift; bless $_[0], $class } +} + +{ + package HashMap; + sub new { my $class = shift; bless $_[0], $class } +} + +1; |
