課題2 データ構造をBNFに合わせる

2006-11-29 - メモ日記の記事の課題2。データ構造にダミーのデータコンストラクタが入ったのは、tParseというクラスメソッドをすべてのデータ型に対して実装しようとしたのが原因。これをしようとしたことで、tParseの引数と返り値が(a,[String])という型で…

課題

亀プログラム処理系の発展を考える。 課題は、 パースエラー時、エラーメッセージ出力 BNFデータ構造のダミーコンストラクタを消す Expandで新しい木構造を作るのはメモリのムダ遣いなのでやめる

はじめてのモナド

まず課題1。亀プログラム処理系プログラムがエラーメッセージを返せないのは、すべてのエラーがMaybeモナドのNothingになってしまい、それ以外の情報を抽出できないため。一方で、Maybeモナドを亀プログラム処理系プログラムで使用するのは自然。なぜならモ…

書いてみたプログラム

亀プログラム。 もともとは、「増補改訂版Java言語で学ぶデザインパターン入門」のInterpreterパターンの章で出てくる簡易言語(亀プログラム)の解釈をHaskellで書いたらどう書くのかという試み。BNF参考 <program> ::= program <command list> <command list> ::= <command>*end <command> ::= <repeat command> | <primitive command> <repeat command> ::= repeat <number> <command list> </command></number></repeat></primitive></repeat></command></command></command></command></program>

型、型クラスとMaybe

亀プログラムに向けて型と型クラスの練習。go/left/rightだけ考えてみる。型クラスはJavaでいうトコロのインタフェースに相当する。型クラスの関数を実装してインスタンス化。ムリヤリMaybeも入れてみるが、そのせいなのかなんなのかいまいちピンと来ず。ダ…