haskell

またHaskell基本

Haskellの基本動作あれこれを少し。ループはアキュムレータを再帰で渡して実現。しかし、プライムで別の値を作るのって効率悪くないのかしら。以下の例は10進数の数値を表す文字列を数値に変換する。 import Data.Char asInt :: String -> Int asInt xs = lo…

Haskell再び、簡単なところから

Haskellは一旦あっさり諦めようと思ってたけど、結局、オライリーから出ている「Real World Haskll」という本を買ってしまって、また読み始めている。漆塗り勉強法。薄く何度も繰り返し塗る。で、少し読み進めたらまた何か簡単なものなら書けそうな気がして…

幅優先探索的にHakellはしばらくスキップ

何となく雰囲気が分かったから、とりあえず何かを書いてみようと思ってHaskellやってみたけど、1時間×3回でコンパイルエラーの嵐で挫折した。というか、何をどうしていいか、すぐに分からなくなる。英語のスペル辞典からアナグラムを探す例題も破綻。やっぱ…

Haskellでfizzbuzz

動いて妙にうれしい。 main = putStrLn $ unwords $ map fizzbuzz [1..100] fizzbuzz :: Integer -> String fizzbuzz n | divides 3 && divides 5 = "fizzbuzz" | divides 3 = "fizz" | divides 5 = "buzz" | otherwise = show n where divides p = mod n p …

ふつうのHaskell本読了

「ふつうのHaskellプログラミング」(青木峰郎著)を一通り読んだ。関数、型クラスあたりの話が非常におもしろい。Haskellの関数って引数が2つ以上あるように見えても、それは実は引数を1つ取って関数を返す高階関数なんだという話とか、関数定義のところで…

Haskellを少しやってみる

何となくHaskellを少しやってみようかと思った。「ふつうのHaskellプログラミング」(青木峰郎著)を頭から3分の1ほど読んだ。ビックリするぐらいRubyと似てる。モナドとか言わなければ、あまり違和感がないかも。リストを切り刻む関数のhead、tailはLispのc…

プライム、プライム、プライム

数万語あるスペル辞書から「amble、blame、mabel、mable」のようなアナグラムになっている単語を拾い出すというプログラムをHaskellでもやってみようと頑張ってみた。前にRubyで書いていたし、比較的簡単にかけそうな気がしたのだけど、コンパイルエラーが出…