Haskell の手続き言語もどき

前回までのエントリーで、Haskell の純粋関数の部分は、全て式の展開で理解できることを述べた。Haskell の関数は、式の展開という観点から調べると極端に理解しやすくなる。

ところが、Haskell は純粋関数型言語なので、変数の内容を書き換えるような変数への代入がない。しかし、実際には代入のないプログラム言語では、入出力の記述は難しい。そこで、Haskell にも擬似的に手続き型言語的なプログラムができるような環境が作ってある。それが do 記法だ。

do 記法の詳しい説明は教科書を参照してほしいが、do 記法の中であれば、手続き型のプログラミングを記述することができる。次の例は、Hugs のコンソールから実行した例だ。 <- 記法が擬似的な変数への代入を実現している。

Main> do {x <- getLine; putStr x }
hello, world
hello, world

:edit コマンドを作ってファイルに作成する時は、インデントを利用すると、分かりやすい。

main = do
  putStr "name ?"
  name <- getLine
  putStrLn ("Hello, " ++ name ++ "!!")

実行例

Main> main
name? Dolly
Hello, Dolly!!

Haskell の純粋関数の部分と do 記法のなかに閉じ込められる手続き型言語もどきの部分を使えるようになったら、ずいぶん Haskell の垣根が低くなるのではないだろうか。
[PR]
by tnomura9 | 2010-10-12 08:35 | Haskell | Comments(0)
<< Haskell で手続き型もど... 関数のカリー化も式の置き換え >>