Haskell勉強中
どこかの人をまねして、Haskellを覚える課程を書いてみる。
目標は、波動方程式をシミュレーションすること。できれば、今夜の1時ぐらいまでには形にしたい。無理だっ。あきらめて、明日やることにする。
まずは、hugsをダウンロード。
並列してA Gentle Introduction to Haskell, Version 98を読み始める。
SMLの香り
inc n = n+1
で関数incを定義する。SMLっぽいなー。
ここに来て、インタプリンタのダウンロードが終わったので走らせてみることにする。
おや、エラーがでる。なんでやろ。はあはあ、どうもHugsはインタプリンタであって、対話式ではないらしい。ソースコードはテキストファイルに書かないといかんみたいだ。面倒だ。
試しに、上の内容をテキストに書いて:loadで読み込んで、
inc 1
とやったら2と表示された。
4行のクイックソート
quicksort =
quicksort (x:xs) = quicksort [y | y <- xs, y < x]
++[x]
++quicksort [y | y <- xs, y >= x]
非正格な関数
要するに、必要になったときに評価する怠け者ってこと。
- 無限ループ loop = loop - 常に1を返す f x = 1
としておいて、
f loop
をやっても、普通に1を返す。
Cとかじゃ、こうはいかない。loopが評価されてしまう。
とど(TODO)ちゃん
遅延パターンがようわからん。また今度ね。
PHYTHONの香り
Haskellではインデントが意味を持っている。この考え方は本当にセンスいいと思う。