aboutsummaryrefslogtreecommitdiff
path: root/perl/types.pm
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-04-19 15:12:13 -0500
committerJoel Martin <github@martintribe.org>2014-04-19 15:12:13 -0500
commitb5dedee06b3a8fbec962fe23b0d474d7cf037a3d (patch)
tree78517cde6624ebd3303627d62c19f48d199e6193 /perl/types.pm
parent9e5b215158a40ad983cbc22464761524845dd9bf (diff)
downloadmal-b5dedee06b3a8fbec962fe23b0d474d7cf037a3d.tar.gz
mal-b5dedee06b3a8fbec962fe23b0d474d7cf037a3d.zip
Perl: add step1_read_print, types.
Diffstat (limited to 'perl/types.pm')
-rw-r--r--perl/types.pm55
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;