Haskell
cabal install のリポジトリ http://hackage.haskell.org/trac/hackage/wiki/CabalInstall を見ればいいんだけど、おもいっきり間違えた。 cabal install の stable branche は http://darcs.haskell.org/cabal-branches/cabal-install-x.x である。 Setup c…
f >>> g1 &&& (g2 >>> g3) >>> h1 *** h2 >>> first i >>> j1 ||| j2を、 f v v g2 v v g1 &&& v v v v g3 v v h2 j1 v * | * >>> | * | h1 >>>>>> i j2とか書けたら愉快ですね(monospaceなフォントで表示してください)。
class Functor f => Applicative f where pure :: a->f a <*> :: f (a->b)->f a->f b class Foldable t where foldr :: (a->b->b)->b->t a->b foldr f b = foldMap (`f` b) foldMap :: Monoid m => (a->m)->t a->m foldMap f = foldr (mappend . f) mempty c…
話とかは気が向いたら書く… decList x = x:if x == 0 then [] else decList (x - 1) fix $ \f x->x:if x == 0 then [] else f (x - 1) \f x->x:if x == 0 then [] else f (x - 1) fix :: (a->a)->a loop :: a (b, d) (c, d)->a b c fix f = f $ fix f loop f…
{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleInstances #-} data Zero = Zero data Succ n = Succ n _0 = Zero _1 = Succ _0 _2 = Succ _1 _3 = Succ _2 _4 = Succ _3 _5 = Succ _4 type family NthParamType n a :: * type instance NthPar…
フィボナッチ数列 fib = 0:1:zipWith (+) fib (tail fib)で、これを新しい名前を作ることなく、かつ無名関数を書かずにやってみる。まずは関数の形になおす。 fib = let fib' x y = x:fib' y (x+y) in fib' 0 1fib'のパターンを書かないように変形する。 fib…
人のいないところでマルチキャストしても意味ないけど、 http://atnd.org/events/1048 です!Haskellに興味のある型もない型(←わざと)も、ぜひご覧あれ!
work :: Maybe Programmer->Maybe Specification->Either SourceCode Garbage
ここのところ、ちらほらと「あーこれHaskellなら…」とか考えるようになった。しかし会社で例えば、 // 多分Maybeなコード using boost::optional; using boost::result_of; using boost::bind; // >>=は右結合で()書くのが面倒なので>=にした template<typename T, typename F> typen</typename>…
12, 13章はwikiを作る内容だったので割と適当に読み流し。私の理解はPersecってSpirit。
なんだ、型クラスってConceptじゃないか?あとaliasとかtypedef(いずれもD的な意味で)とか。データ型はなんかstruct(C的)+union+enumみたいな。というかC++のFunctionalなあれやこれやを見たことある人ならそこまで突っかからずに理解できる感じ。ただ私はMo…
ふつうのHaskell第5章。このへんから面白くなってきそうな感じ。
なんだあるじゃないか?「はじめてのyi」的なものが。http://nobugs.org/developer/yi/index.htmlここ。とりあえずここと他のHaskell解説サイトでも見ながらいじってみることにする。つーかデフォルトで文字小さすぎ。