Haskell

お知らせ

効率が悪いので「HaskellでSICP」はしばらくお休みします。

3日目 数値の型など

1.3.3 search を書いてみる。 search :: (Fractional a, Ord a) => (a -> a) -> a -> a -> a search f neg pos = let mid = average neg pos in if closeEnough neg pos then mid else case signum (f mid) of 1 -> search f neg mid -1 -> search f mid pos…

2日目

1.2.6 素数 最小の除数を求める。この通りにやるより、除数のリストを作るほうが簡単かな。 divisers :: Int -> [Int] divisers n = [ x | x <- [2 .. limit], n `mod` x == 0] where limit = floor (sqrt (fromIntegral n)) isPrime :: Int -> Bool isPrime…

遅延評価と末尾再帰

そういうことで、問題1.11 の反復的なものを Haskell で書くときはこの前書いた f n = iter 2 1 0 n where iter a b c count | count == 0 = c | otherwise = iter (a + 2 * b + 3 * c) a b (count - 1)では固定スペースで実行できなくて、こうやらないとい…

The Craft of ... の続き(2)

p303 newtype コンストラクタが一つの時は data じゃなくて newtype と書くと効率的。そんなこと機械が勝手にやればいいのに。 p308 $6,4000 question ミリオネアみたいなクイズ番組らしい -> http://www.museum.tv/archives/etv/S/htmlS/$64000quest/$64000…

The Craft of ... の続き

やっぱりやめない。 p81 == でリストの中身を見るんだ。代入が基本ないのでリファレンスとかそこら辺の捉え方がだいぶ違うんだろうなあなどと思う p105 [ x | (x, t) tupleとかリストとか関数の引数列とか色々あってきれいじゃない感じがする。perlだったら…

The Craft of ...

Haskell:The Craft of Functional Programming (International Computer Science Series) まず基本的な書き方を覚えようということで入門書を。過剰にていねいなのですぐに読めると予想されています。 3章 p44 Float fromInt がない。 -> fromIntegral って…