2025年9月30日火曜日

Haskell入門 モナドによるDSLの実現 ~operational~ P274

型の変換を細かく追って、整合性を確認はしてみましたが、けっこう込み入っていて、それに気を取られると全体の構造がわかりにくいので、おおまかにとらえることも大事かと思いました。runSalesTという関数が、再帰を使って、レシピを読み取っていく構造になっているようです。

 その際、ポイントが :>>=という関数のようです。 (ひとつの命令):>>= (それに続く残りの命令) この残りの命令である右辺がkとなっていて、 これが次のrunSalesTへ再帰で渡される構造になっているようです。そして、次のrunSalesTで、また先頭の(ひとつの命令)が取り出され、それに応じて枝分かれした処理が行われ、...これを繰り返していく。

  ちょうど、リストを順に処理していく再帰と同じ構造のようです。func( [a:k])=(何らかの処理   func(k)) の形。

 簡単なoperational使ったDSLのコードをChatGPTに頼んで作ってもらいました。

sample.hs

.yamlに- operationalを追加必要し stack runghc  sample.hsで7と表示します。
あるいはstack runghc --package operational sample.hsでもいいようです。

0 件のコメント:

コメントを投稿