メモ
sub cons {
#construct Pair Data
my ($x, $y) = @_;
return sub {
my $m = shift;
#dispatch
if ( $m == 0) {
return $x;
}elsif ($m == 1) {
return $y;
}
};
}
sub car {
#$z must be Pair Data
my $z = shift;
$z->(0);
}
sub cdr {
my $z = shift;
$z->(1);
}
my $pair = cons('a' ,'b');
print car($pair); # a
print cdr($pair); # b
入れ子にするとダメだけど
新しいデータ型を作るにあたって
と考える。もっともふつーのオブジェクト指向の書き方をすればこんな事を考えなくてすむんだけど、基本的な手続きとクロージャだけでオブジェクト指向風にするにはどうすればいいのかという点を。