クォートされたS式を受け取って文字列を返すものをつくってみた。
use Term::ReadLine;
my $term = new Term::ReadLine 'Simple LISP REPL';
my $prompt = "CL-USER> ";
my $OUT = $term->OUT || \*STDOUT;
while ( defined ($_ = $term->readline($prompt)) ) {
my $res = $_;
warn $@ if $@;
$res =~ s/^\'//;
print $OUT $res, "\n" unless $@;
}
実行
$ perl s.pl
CL-USER> '(+ 1 2)
(+ 1 2)
CL-USER>
という手抜き。
だが、Readerを実装して処理させれば良いのであろう。