2004-11-01から1ヶ月間の記事一覧

野口英世

や樋口一葉の描きかた。

SKS /= I

s k s :: (a -> b -> c) -> a -> b -> c s k k :: a -> as f g x = f x (g x) k x y = x -- s :: (a -> b -> c) -> (a -> b) -> a -> c -- k :: a -> b -> a -- s: c == a -- s k :: (a -> b) -> a -> a -- s k: a == (a -> b -> c), b == ((a -> b) -> a ->…

明け方微睡んでいると、「ことえり」という言葉が浮かんできて、由来が「言選り」だろうと気づいた*1。 SKK 由来がSKK=Iからというのは、3文字目に全く意味がないところがしっくりこない。True or False = Trueという有名な等式から、True or False と名付け…

histomorphism

読めない(理解できない)けれど似ていそうな雰囲気。また見に行く*1。[id:yts:20041126#p1] *1:アンテナでできるのかな?

長さ固定リスト

長さをタイプチェックできるリストが欲しかったので、 infixr 5 :*: data FixedList b a = a :*: b a -- deriving Show -- 要るかな? data Nul a = Nul deriving (Show, Eq) instance Functor Nul where fmap _ _ = Nul instance Functor b => Functor (Fix…

DeepSeq

問題 f_leak :: Int -> [Int] -> [Int] f_leak 0 xs = xs f_leak n xs = f_leak (n - 1) $! take 2 (xs ++ xs) -- f_good = ?Main> f_leak 100000 [0,1] ERROR - Garbage collection fails to reclaim sufficient space Main> f_good 100000 [0,1] [0,1] 説…

スーパータイピング

hypersetって何?なレベルなのだけど。;-)Set uかuかによってアルゴリズムが違うのでタイプクラスを使わないとできなさそう。 マルチパラメータタイプクラスを使わずにできるだろうか? 問題 f :: k -> A a -> B k として型 a または C a をとれるような関数…

領域を無駄にしない

ツリーの端のために領域が無駄になるという指摘は面白かった。こういう時にもViewsが役にたちそう。実現しそうにないけれど、個人的には非常に欲しい機能だ。 真似して data ViewOfT = VT (VT a) a (VT a) | VE toView (N a) = VT a E E ... fromView (VT a …

インターフェイス改良

きのうのmemo関数にちょっと工夫をすれば、インターフェイスもこのようになる。 fib' = memo1' (\f n -> case n of 0 -> 0 1 -> 1 _ -> f (n - 1) + f (n -2))これで一次元版は一応の完成。 memo1' f n = memo1 (\n xs -> f (\m -> shift xs n m) n) n where…

memoization

"top-downのmemoization"をしばらく前に思いついてhttp://www.sampou.org/cgi-bin/haskell.cgi?p=Programming%3a%b6%cc%bc%ea%c8%a2%3a%ca%b8%bb%fa%ce%f3&l=jp#6にも書きこんだのだが、今日は http://d.hatena.ne.jp/tanakh/20041126 に触発されてmemoizati…