haskell
文章平均质量分 67
臀悬空
这个作者很懒,什么都没留下…
展开
-
haskell Monad: Status Monad
接受一个状态,回传一个值跟一个新的状态。写起来会像这样:s -> (a,s)转载 2014-11-21 20:52:55 · 724 阅读 · 0 评论 -
haskell Monad 2 Write monad
= f x in (y,log ++ newLog)转载 2014-11-19 19:28:03 · 630 阅读 · 0 评论 -
haskell Monad 3 Reader Monad
instance Monad ((->) r) where return x = \_ -> x h >>= f = \w -> f (h w) w转载 2014-11-19 19:53:34 · 740 阅读 · 0 评论 -
haskell monad
Monad 是一个从 Applicative functors 很自然的一个演进结果。对于他们我们主要考量的点是:如果你有一个具有 context 的值 m a,你能如何把他丢进一个只接受普通值 a 的函数中,并回传一个具有 context 的值?也就是说,你如何套用一个型态为 a -> m b 的函数至 m a?基本上,我们要求的函数是:(>>=) :: (Monad m) => m转载 2014-11-18 09:36:59 · 666 阅读 · 0 评论 -
haskell Monoids
12class Monoid m where mempty :: m mappend :: m -> m -> m mconcat :: [m] -> m mconcat = foldr mappend mempty3转载 2014-11-17 19:37:36 · 495 阅读 · 0 评论 -
haskell Applicative Functor
在 Haskell 中是用在 Control.Applicative中的 Applicative 这个 typeclass 来定义的.转载 2014-11-17 17:54:57 · 584 阅读 · 0 评论 -
haskell 类型
数据和函数都有类型addThree :: Int -> Int -> Int -> Int addThree x y z = x + y + zghci> :t True True :: Bool ghci> :t "HELLO!" "HELLO!" :: [Char]转载 2014-11-15 22:01:05 · 470 阅读 · 0 评论 -
haskell 函数
doubleMe x = x + x转载 2014-11-15 21:51:08 · 466 阅读 · 0 评论 -
haskell 递归和高阶函数
递归实际上是定义函数以调用自身的方式。 Haskell 没有 while 或 for 循环的原因,递归是我们的替代方案。边界条件: 不递归的部分, 在递归定义中声明的一两个非递归的值maximum' :: (Ord a) => [a] -> a maximum' [] = error "maximum of empty list" maximum' [x] = x转载 2014-11-15 22:21:09 · 1067 阅读 · 0 评论 -
haskell Functor
Functor 这个 typeclass,基本上就代表可以被 map over 的事物。听到这个词你可能会联想到 List,因为 map over list 在 Haskell 中是很常见的操作。你没想错,List 的确是属于 Functor 这个 typeclass。转载 2014-11-17 09:08:19 · 698 阅读 · 0 评论