首页 文章
  • 33 votes
     answers
     views

    Monad对申请人有什么好处?

    我读过this article,但最后一节并不明白 . 作者说Monad给了我们上下文敏感性,但是只使用Applicative实例就可以实现相同的结果: let maybeAge = (\futureYear birthYear -> if futureYear < birthYear then yearDiff birthYear futureYear else ye...
  • 9 votes
     answers
     views

    <*>对于按表示法实现的列表 - 这不是“作弊”吗?

    根据'Learn you a Haskell',列表的 &lt;*&gt; 的实现是: fs &lt;*&gt; xs = [f x | f &lt;- fs, x &lt;- xs] 我错了,还是基于 &gt;&gt;= 的这个含糖的monadic代码? 据我所知,应该可以仅使用 fmap 来实现&lt;*&gt;,因为应用的是Maybe的情况 . 如何仅使用 fmap 实现列表 &lt;*&...
  • 1 votes
     answers
     views

    如何在我的列表中实现Applicative,建模非确定性?

    当我遇到_654182时,我在Haskell练习Functor / Applicative Functors Monads: 4)您已经了解了Monad实例如何用于处理可能失败的事物 . Monad的另一个用例是处理非确定性问题 . 模拟非确定性计算的最简单方法是使用列表 . 将列表视为包含某些计算的所有可能结果 . 使用众所周知的 Map 功能时,您正在应用的功能会生成所有可能输入的输出 ....
  • 12 votes
     answers
     views

    我可以't understand Wikipedia'定义“applicative functor”

    在Haskell中学习仿函数,应用函子和monad,我在Wikipedia找到了这个定义: 在函数式编程中,特别是Haskell,一个applicative functor是一个结构,就像一个没有连接的monad(return,fmap,join),或者像带有return的functor . 我无法理解:在我看来,将 return (即 pure )提供给仿函数并不足以获得一个应用仿函数,因为...
  • 11 votes
     answers
     views

    Haskell中State的Functor / Applicative实例

    在阅读(并略过一些部分)Wadler关于monad的论文之后,我决定更仔细地研究这篇论文,为他描述的每个monad定义函子和应用实例 . 使用类型同义词 type M a = State -&gt; (a, State) type State = Int Wadler用来定义状态monad,我有以下(使用相关的名称,所以我可以稍后使用newtype声明定义它们) . fmap' :: (a -&...
  • 188 votes
     answers
     views

    不是Functor / Functor / Applicative / Monad的好例子?

    在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与...
  • 15 votes
     answers
     views

    如何证明monad是一个仿函数和一个应用函子?

    Monad在理论上被认为是仿函数的一个子集,特别是应用仿函数,尽管它没有在Haskell的类型系统中指出 . 知道这一点,给定一个monad并基于 return 和 bind ,如何: derive fmap , derive &lt;*&gt; ?
  • 3 votes
     answers
     views

    应用函子和monad之间的等价性

    人们说monad是应用函子的扩展,但我不是以应用函子为例: (&lt;*&gt;) :: f(a-&gt;b) -&gt; f a -&gt; f b [(+3)] &lt;*&gt; [2,3,4] 现在,我也期望我可以做与monad相同的事情,这意味着我可以应用2个参数:一个上下文包含一个函数,另一个上下文来获取一个上下文 . 但对于monad,我不能 . 我需要的只是写一个像这样丑陋的函数...
  • 188 votes
     answers
     views

    不是Functor / Functor / Applicative / Monad的好例子?

    在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与...
  • 188 votes
     answers
     views

    不是Functor / Functor / Applicative / Monad的好例子?

    在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与...
  • 19 votes
     answers
     views

    应用仿函数更有趣

    Earlier我问过翻译monadic代码只使用Parsec的applicative functor实例 . 不幸的是,我得到了几个回复,回答了我真正问过的问题,但并没有给我太多的了解 . 那么让我再试一次...... 总结我到目前为止的知识,一个应用函子比一个monad更受限制 . 在“少即是多”的传统中,限制代码可以做什么会增加疯狂代码操作的可能性 . 无论如何,很多人似乎相信使用applic...
  • 6 votes
     answers
     views

    如何在Scala中实现Future作为应用?

    假设我需要运行两个并发计算,等待它们,然后组合它们的结果 . 更具体地说,我需要同时运行 f1: X1 =&gt; Y1 和 f2: X2 =&gt; Y2 ,然后调用 f: (Y1, Y2) =&gt; Y 以最终获得 Y 的值 . 我可以创建未来的计算 fut1: X1 =&gt; Future[Y1] 和 fut2: X2 =&gt; Future[Y2] ,然后使用monadic组合将它们...
  • 29 votes
     answers
     views

    使用返回未来的函数遍历列表和流

    简介 Scala的 Future (new in 2.10和now 2.9.3)是一个应用函子,这意味着如果我们有traversable type F ,我们可以将 F[A] 和函数 A =&gt; Future[B] 转换为 Future[F[B]] . 此操作在标准库中可用作Future.traverse . Scalaz 7还提供了一个更通用的 traverse ,如果我们从scala...
  • 20 votes
     answers
     views

    类型的函数和应用程序(* - > *) - > *

    我遇到了一种情况,我的代码将从使用 Functor 和 Applicative 类似的抽象中受益,但对于类型 (* -&gt; *) -&gt; * . 定义一个更高级的仿函数可以像_2935073这样完成 class HFunctor f where hfmap :: (forall x. a x -&gt; b x) -&gt; f a -&gt; f b 但 Applicativ...
  • 0 votes
     answers
     views

    为列表实现sequenceAL

    Typeclassopedia(Haskell Wiki)在Applicative的部分进行了这个练习: Implement a function sequenceAL :: Applicative f =&gt; [f a] -&gt; f [a] 我只能这样做,如果使用do notation(要求将Monad f添加到上下文中: sequenceAL :: (Monad f, Applica...
  • 1 votes
     answers
     views

    在Haskell中的ApplicativeDopragma和Applicative Functor

    Functor, Applicative, and Monad的一个例子略有变化: {-# LANGUAGE ApplicativeDo #-} import Safe (readMay) -- import Control.Applicative ((&lt;$&gt;), (&lt;*&gt;)) displayAge maybeAge = case maybeAge of ...

热门问题