-
5 votesanswersviews
状态monad是否具有两个状态变量类型(in和out)仍然是monad?
Haskell的状态monad State s a 迫使我在整个do块期间保持相同类型的 s . 但是因为状态monad实际上只是一个函数,如果我将它定义为 State i o a = State (i -> (o, a)) 怎么办? return 和 bind 函数看起来与标准状态monad中的函数完全相同,但是类型已更改: return :: a -> State st st... -
154 votesanswersviews
颧弓形态前同态的真实应用
是的,these ones: {-#LANGUAGE TypeOperators, RankNTypes #-} import Control.Morphism.Zygo import Control.Morphism.Prepro import Control.Morphism.Histo import Control.Functor.Algebra import Control.Functor... -
14 votesanswersviews
自由组monad
在类别理论中,monad是两个伴随函子的组合 . 例如,Maybe monad是由遗忘函子组成的自由尖集函子 . 同样,List monad是由健忘的仿函数组成的免费monoid仿函数 . Monoid是最简单的代数结构之一,所以我想知道编程是否可以从更复杂的代数中受益 . 我没有在标准的Haskell包中找到自由组monad,所以我将在这里定义它 data FreeGroup a = Nil |... -
3 votesanswersviews
Functor的copoints上的自然幺半群结构是否会诱导Comonad?
情况如下(我改为更标准的Haskell表示法): class Functor f => MonoidallyCopointed f where copointAppend :: (∀r.f(r)->r) -> (∀r.f(r)->r) -> (∀r.f(r)->r) copointEmpty :: ∀r.f(r)->r 对于 Mon... -
646 votesanswersviews
monad只是endofunctors类别中的幺半群,问题是什么?
谁首先说了以下几点? monad只是endofunctors类别中的幺半群,问题是什么? 在一个不太重要的注意事项上,这是真的,如果是这样,你能给出一个解释(希望有一个可以被没有Haskell经验的人理解的那个)吗? -
20 votesanswersviews
为什么monad变换器与堆叠monad不同?
在许多情况下,我不清楚将两个monad与变压器组合而不是使用两个单独的monad可以获得什么 . 显然,使用两个独立的monad是一件麻烦事,并且可能涉及到符号内部的符号,但是有些情况下它只是表达不够吗? 一个案例似乎是列表上的StateT:组合monads不能得到正确的类型,如果你通过像Bar这样的monad栈获得正确的类型(其中Bar a =(Reader r(List(Writer w(Id... -
8 votesanswersviews
Scala - 如何在非函数类型上使用Functors?
在阅读此博客上的Functors说明时: https://hseeberger.wordpress.com/2010/11/25/introduction-to-category-theory-in-scala/ Functor的一般定义和更具体的定义: trait GenericFunctor[->>[_, _], ->>>[_, _], F[_]] { def... -
31 votesanswersviews
一个不平凡的共生体是什么样的?
例如,在Haskell的_3044004中提到了类共同体: 由于Haskell中缺少非平凡的共生,我们可以限制自己需要一个Functor而不是一些Coapplicative类 . 经过一番搜索后,我找到了一个StackOverflow answer,用共同必须满足的法则解释了这一点 . 所以我想我理解为什么在Haskell中假设的Comonoid类型类只有一个可能的实例 . 因此,为了找到一个... -
316 votesanswersviews
“编程代码”在编程环境中意味着什么?
我在函数式编程和PLT圈子里曾多次听到过“enggebras”这个术语,特别是在讨论对象,comonads,镜头等时 . 谷歌搜索这个术语给出了这些结构的数学描述的页面,这对我来说是非常难以理解的 . 任何人都可以解释一下代数在编程环境中的含义,它们的意义是什么,以及它们与对象和共同体的关系? -
3 votesanswersviews
为什么Functor是一个更高级的类型
我有以下仿函数定义 trait Functor[F[_]] { def map[A, B](fa: F[A])(f: A => B): F[B] } object ListFunctor extends Functor[List] { // def map[A, B](f: A => B)(data: List[A]): List[B] = data map f } ...