top page > computer > haskell > web_lecture > for_programmer > main.html
更新日:
文責: 重城良国

機能: main

はじめに

対話環境でいろいろな関数や値を試してきた。IOモナドを学ぶまではそのようにしていく。しかし、ちょっとだけスタンドアロンなプログラムを見てみよう。

どのように考えるか

Haskellの関数にできることは値を変換することだ。変換の結果新たな値ができる。関数自体には入出力はできない。標準入力から読みこむことも標準出力に書きだすこともファイルを扱うこともできない。できるのはこれらを実行する「機械」を返すことだ。関数を引数としてフィルタという「機械」を返す関数interactを紹介した。関数interactを使えば「機械」が手に入る。

機械はただそこにあるだけ

たとえば整数値も文字も整数値のリストも値としては「ただそこにあるだけ」だ。対話環境がそれらの値を評価し表示する。「機械」も単なる値なので何もしなければただそこにあるだけだ。「機械」を駆動するのは関数ではない。mainという変数に「機械」という値をいれておく。すると処理系がその機械のスイッチを入れてくれる。

import Data.Char

main :: IO ()
main = interact $ map toUpper

% runghc upper.hs
hello
HELLO
Ctrl-D

% echo "hoge" | runghc upper.hs
HOGE

runghcでコンパイルせずにインタプリタ実行できる。

まとめ

Haskellでスタンドアロンなプログラムを作るには「機械」型の値を作成しそれで変数mainを束縛しておけばいい。コンパイルせずにインタプリタ実行するのにrunghcが使える。

「関数: 簡易的なIO」へもどる 「NML(5): スタンドアロンなプログラム」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics