Concurrent Clean : CGI by Clean

ということで、CGIを作ってみた。
といっても、全く動的ではないのだが。

module PageIndex

import StdEnv

(++>) infixl 0 //:: !*File !a -> *File
(++>) f a :== (<<<) f a

Start w # (f,w) = stdio w
          f = f ++> "Content-type: text/html\n"
                ++> "\n"
                ++> "<HTML>\n"
                ++> "<HEAD>\n"
                ++> "<TITLE>CGI by Clean</TITLE>\n"
                ++> "</HEAD>\n"
                ++> "<BODY>\n"
                ++> "HELLO WORLD."
                ++> "</BODY>\n"
                ++> "</HTML>\n"
          (_,w) = fclose f w
        = w

というきわめてシンプルなプログラムを、

clm -nr -nt PageIndex -o PageIndex

というようにコンパイルして、サーバに配置すると、
http://cleanj.sourceforge.net/cgi-bin/PageIndex
のようになります。

      • -

ということで、これからは、CleanでCGIプログラミングというネタを時折入れていこうと思います。
コンパイラフロントエンドの方も、ぼちぼちやっていきます。