haskell
Mutable array の prefix sum を余計なメモリを消費せずに計算したい時など、「基本的には mapM_ なんだけど、map してる関数の挙動がそれまでに map し終わった部分の結果に依存して欲しい」ような計算の時、私は foldM_ を使ってたんだけど、これが時々、…
import Text.ParserCombinators.Parsec import qualified Text.ParserCombinators.Parsec.Token as P import Text.ParserCombinators.Parsec.Language (emptyDef)うーん、これなんとかならんのか? 長いんですけど…。複数語だからコピペもだるい…
めも: hugs は -98 option つけないと Parsec 動かない 追記: あ、でも .emacs に追加したらもう関係ないか。
error 関数の出力って stderr に行かないのかよ…orz
Haskell で or-pattern ってどうやって書くんだろう…
"Category products of a given family of objects is unique up to isomorphism." 嘘ぉ。これどうなん? GIMP で矢印つき曲線の描き方がわからんので、超落描きスマソ。こういうきれいな図は何で書いてるのかな。 要するに AxB が「本物の」A, B の product …
main から遠く離れた関数から警告を出力するのってどうやるんだこれ? Trace module とかが使ってる危ない関数使うのか? それができんと compiler の類全然書けんよな。それ以外も難しそう。
うーむ、ちょっと使ってみてるけど、何かと latent typing が恋しいのはナゼ。でも型 error だけ取ってれば bug がなかなか出ない。Hindley-Milner 凄ぇ。
map2 :: (a -> b) -> (c -> d) -> ([a], [c]) -> ([b], [d]) -- map2 f g (xs, ys) = (map f xs, map g ys) -- map2 f g = uncurry $ (. map g) . (,) . map f -- map2 f g = uncurry $ (. (,) . map f) (. map g) -- map2 f g = uncurry $ (. (,) . map f) …
expr1 $ expr2 = ((expr1) (expr 2))ゆえに e1 $ e2 $ e3 = ((e1) ((e2) (e3)))で f . g $ x = ((f . g) (x))
eq f = \x -> \y -> f x == f yの body を point-free に書き直したい。しかし思い付かない。Point-free にしたところで別に意味は無いけど…
car = fst cadr = snd
優先度低でちびちび勉強してたり。Monad で I/O。なんだ Haskell の I/O が参照透過てそういうことか。 しかし未だに構文がはっきりつかめん…