プログラマーになりたい。

プログラミングや写真や本や読書会のことや、日常のこと。

MCCの構成を眺めていきたい

ソースなんて、ふつうは全文読破する必要ないのかもですが。とはいえ、そもそもMCCの動作のフローがさっぱりなので、せめて、ざっくりとでも全体像はつかみたい。


で、おもむろにコンパイルにつかったフォルダ「curry-0.9.11」を開いてみたんですが…。
あれ…?なんかLaTeXのソースっぽいのばっかじゃない?
でも、そのTeXはstyファイルがなんか足りなくてコンパイル通らないし…。


というわけで、curryサブフォルダ内(Preludeをはじめとしたモジュールがはいってる)を除くと、Haskellソースっぽいのは

$ ls *.hs
GetOpt.hs	cycc.hs		cymk.hs

なんと、3つだけ!?
少なっ!しかも短っ!
100行未満とか。GetOpt.hsはコマンドライン引数をゴニョゴニョしてるだけで、本質的ではなさげだし。


cyiがどうもただの(それも相当簡易な)フロントエンドらしいとは感じてたけど、cycも、そうっぽい。そしてcycが呼ぶcycc.hsの

compile :: ErrorT IO a -> IO a
compile c = callErr c >>= checkOk
  where checkOk (Ok x) = return x
        checkOk (Errors msgs) =
          putErr (unlines (nub msgs)) >> exitWith (ExitFailure 1)

あたりが肝なのかね。名前的にはいかにもコンパイルしてる風ですが…。
で、これなにしてんの…?


ともかく目下のJCUGでのぼくの使命としては、翻訳にくわえて

  • なんちゃってcyi的なCurryで操作するDBを作る
  • DBは関数単位で動的に保存・書き換えをする
  • そのために関数宣言の動的書き換えの可能性を探る

といったところなんだけど。


だめだ、さっぱりである。一体、このそっけない呼び出したちが、実際どう動いているんでしょうか…。

Creative Commons License ©2007-2021 IIDA Munenori.