C for Haskeller
http://d.hatena.ne.jp/w_o/20061008#p1
http://d.hatena.ne.jp/niha/20061008#1160319491
勿論すごい人の以下略。Haskellから入った人には、ポインタとか以下略。対象読者は以下略。
Cとは、以下のような特徴を持ったプログラミング言語です
説明していくと長くなるので以下略。
Cには、次の型があります。
#define n 10
この時点でわかる人にはオチが見えたと思いますので、壮絶に飛ばします。この時点でfor Haskellerのつもりが無いことはばれているわけでいすが補足しておくと「限定的にパターンマッチ」はsizeof##その他諸々のことです。関数はインラインで書ける場合もありますが、一定以上複雑な場合はファイルに記述し呼び出すには#includeと書きます。
(ここに大量の説明があるつもり以下略)
さて、(実際には何も書いてませんが)Cの機能をひととおり理解していただけたでしょうか。
これらの機能は、Boostのような奇っ怪なものではなく、標準ライブラリのtgmath.hなどで実際に使われています。
以上の知識の応用として、Hello Worldを書いてみましょう。
Hello Worldは次のように書けます↓
#include <stdio.h> int main() { fputs("Hello World.\n", stdout); }
デフォルトでは遅延評価が働き、なかなか文字列が出力されなかったりしますので、最後の\nは評価タイミングを固定するために必要です。