Drkcore

09 04 2009 perl lisp Moose Moosp Tweet

MooseでLispを実装してみる(NilとT)

やさしい Lisp の作り方 by Java and by C#を参考に書いてみる。進行中のメモなのであちこち修正するかも。というか修正しまくりで全然進まないのでメモることにしたという。もう少しまとまったらLISPをみんなで勉強しよう!に投稿したい。

ちなみにMooseでlispなのでMoosp(ムースプ)だ。

まずNilとTはMooseX::SingletonでSingletonにした。

package Moosp::Nil;

use MooseX::Singleton;
with 'Moosp::Sexp';

sub str {"NIL"}

__PACKAGE__->meta->make_immutable;

no MooseX::Singleton;

1;

Tも一緒。

package Moosp::T;

use MooseX::Singleton;

extends 'Moosp::Atom';
with 'Moosp::Sexp';

sub str {"T"}

__PACKAGE__->meta->make_immutable;

no MooseX::Singleton;

1;

javaでlispだとSexpはインターフェースなのでMoose::Roleのクラスにしてみたけどこれでいいのかはわからない(まだ最後まで動かしてないので)。

package Moosp::Sexp;

use Moose::Role;

requires 'str';

sub print { 
  my $self = shift;
  print $self->str;
}

sub serialize {
  my $self = shift;
  return $self->str;
}

no Moose::Role;
1;

Moosp::Atom

package Moosp::Atom;

use Moose;

__PACKAGE__->meta->make_immutable;

no Moose;
1; 

モダンperl入門が手放せない

ProductName モダンPerl入門 (CodeZine BOOKS)
牧 大輔
翔泳社 / ¥ 2,940 ()
在庫あり。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021