首页 文章
  • 1 votes
     answers
     views

    在Haskell中的ApplicativeDopragma和Applicative Functor

    Functor, Applicative, and Monad的一个例子略有变化: {-# LANGUAGE ApplicativeDo #-} import Safe (readMay) -- import Control.Applicative ((<$>), (<*>)) displayAge maybeAge = case maybeAge of ...
  • 5 votes
     answers
     views

    使用Bound与多个类型变量进行抽象

    我一直在试用bound包 - 你可以尝试使用的一个玩具示例是系统F.与包文档中的示例不同,它包含一个由lambda绑定的变量的类型参数,System F将有两个类型参数,一个用于普通变量(由普通的lambda抽象绑定),一个用于类型变量(由类型抽象绑定) . 我不太明白如何使用该软件包,但是看一下这些示例,我得到的印象是我应该首先为表达式类型编写一个 Monad 实例 . 然而,我遇到了麻烦,因为...
  • 0 votes
     answers
     views

    Haskell:如何为解析器实现>> =

    我有以下Parser newtype Parser a = P (String -> [(a,String)]) 我需要在Monad的实现上实现bind . 我知道返回被定义为 instance Monad Parser where return v = P (\inp -> [(v,inp)]) 要实现 p >>= f 我知道的很多: p 是一个Parser对...
  • 23 votes
     answers
     views

    为什么不验证Monad? (scalaz7)

    一个用例示例: def div2(i: Int): Validation[String, Int] = if (i%2 == 0) Validation.success(i/2) else Validation.failure("odd") def div4(i: Int) = for { a <- div2(i) b <- di...
  • 10 votes
     answers
     views

    Monadic折叠与状态monad在恒定的空间(堆和堆栈)?

    是否可以在常量堆栈和堆空间中在State monad中执行折叠?或者是一种不同的功能技术更适合我的问题? 接下来的部分将描述问题和激励用例 . 我正在使用Scala,但Haskell中的解决方案也是受欢迎的 . 折叠状态Monad填满堆 假设Scalaz 7.考虑一下州Monad的monadic折叠 . 为了避免堆栈溢出,我们将蹦蹦跳跳 . import scalaz._ import Scal...
  • 334 votes
     answers
     views

    Scalaz迭代:“提升”“EnumeratorT”以匹配“IterateeT”以获得“更大”的monad

    如果我有 EnumeratorT 和相应的 IterateeT 我可以一起运行它们: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT....
  • 3 votes
     answers
     views

    类型级无形:聚合HList类型元素

    我想用这个Monad折叠一个HList,但是 at the type-level trait TypeMonad{ type Append[A,B] = A with B type Identity = Any } 因此,HList:“A :: B :: C :: HNil”将给出类型“A with B with C with Any” 如果我实现了HList,那很容易做到: sea...
  • 33 votes
     answers
     views

    Monad对申请人有什么好处?

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

    用于控制流程的Monad - 序列,选择和迭代

    我可以看到你如何使用Monad是Haskell for IO - 围绕这个操作的计算创建一个容器 . 有意义的是,您可以使用Monads“将计算一起插入” - 就像为数据流操作组合函数一样 . 我只是喜欢grokking,你可以使用Monads进行控制流程 . 现在我理解控制流程是关于顺序,选择和迭代 . 现在我对高阶函数(如map,foldl,filter和zipwith / mapcat)感...
  • 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 -> (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 <*> ?
  • 3 votes
     answers
     views

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

    人们说monad是应用函子的扩展,但我不是以应用函子为例: (<*>) :: f(a->b) -> f a -> f b [(+3)] <*> [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的一个很好的例子与...
  • 5 votes
     answers
     views

    确定临时类型变量的范围

    我有大量的vector类型的功能 f :: (M.MVector v r, PrimMonad m) => v (PrimState m) r -> v (PrimState m) r -> m () 这些函数大部分都是就地工作,所以将它们的参数变成一个可变向量很方便,这样我就可以编写,迭代等等 . 但是,在顶层,我只想使用不可变的“Haskell”/纯向量 . 以...
  • 6 votes
     answers
     views

    可绑定的functor是更安全的DSL类型的有用抽象吗?

    动机 我目前正在开发一个小爱好项目,尝试在Haskell中实现类似TaskJuggler的功能,主要是作为编写域特定语言的实验 . 我目前的目标是 Build 一个小型DSL来构建 Project 的描述,以及与之关联的 Task . 虽然这将是我的下一个扩展,但还没有层次结构 . 目前,我有以下数据类型: data Project = Project { projectName :: Text...
  • 19 votes
     answers
     views

    应用仿函数更有趣

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

    Monads和抽象

    我是haskell,功能语言和monad的新手 .我已经搞乱了一个月左右;我已经阅读了learn you a haskell并且正在试图制作我的haskell网站 . 但是有些东西困扰着我:monads抽象 . 如果我理解正确,monad是可以排序的“数据容器” . 我可以用“>> =”解压缩它,例如“幕后工作”将为我做更多的工作,所以如果我没有monad定义,我必须猜测它将如何被解压...
  • 15 votes
     answers
     views

    使用带有类型注释树的Bound

    我正在使用Bound库来表示lambda术语: data Exp a = Var a | Exp a :@: Exp a | Lam (Scope () Exp a) 为了能够使用abstract和instantiate与 Exp ,我定义了一个monad实例: instance Monad Exp where return = Var ...
  • 0 votes
     answers
     views

    Monad“拆箱”

    我按照教程Functors, Applicatives, And Monads In Pictures及其JavaScript version来提出问题 . 当文本说functor从上下文中解开值时,我理解发生了一个 Just 5 - > 5 转换 . 根据What does the "Just" syntax mean in Haskell?,只是 Maybe 的...
  • 5 votes
     answers
     views

    Haskell中的Monadic类型检查器

    我正在从BNFC开始在Haskell中编写解析器和类型检查器 . 类型检查器的主要功能实现如下: typecheck :: Program -> Err () typecheck (PDefs ds) = do env <- foldM (\env (DFun typ id args _ _) -> updateFun env id (...
  • 83 votes
     answers
     views

    mtl,变形金刚,monads-fd,monadLib,以及选择的悖论

    Hackage有几个monad变换器包: mtl:Monad变压器库 transformers:混凝土仿函数和monad变换器 monads-fd:Monad类,使用函数依赖项 monads-tf:Monad类,使用类型系列 monadLib:monad变形金刚的集合 . mtl-tf:使用类型族的Monad变换器库 . mmtl:模块化Monad变压器库 mtlx...
  • 3 votes
     answers
     views

    生成在另一个解析器的输出上运行接收的解析器的解析器,并单独加入结果

    给定以下类型和函数,意味着将CSV字段的字段解析为字符串: type Parser resultType = ParsecT String () Identity resultType cell :: Parser String 我已经实现了以下功能: customCell :: String -> Parser res -> Parser res customCell typeN...
  • -2 votes
     answers
     views

    哈斯克尔州Monad协调员

    我想弄清楚Monad的状态如何 . 我正在尝试实现一个获取两个坐标 (x, y) 并返回 x 或 y 坐标的函数 . 这应该发生在Monad州内 . data Coordin = Coordin {x,y :: Float} 应该实现的功能看起来像这样: getX :: State Coordin Float getY :: State Coordin Float 这怎么可行? 我试过这个: ...
  • 6 votes
     answers
     views

    F#中的免费Monad具有通用输出类型

    我正在尝试应用F# for fun and profit中描述的免费monad模式来实现数据访问(对于Microsoft Azure表存储) Example 假设我们有三个数据库表和三个dao的Foo,Bar,Baz: Foo Bar Baz key | col key | col key | col --------- --------- ...
  • 2 votes
     answers
     views

    如何在一个Linq表达式中混合monadic结构?

    我在C#中有一个Maybe monad的玩具实现,并且已经实现了与Linq一起使用的相关SelectMany扩展方法 . 当我尝试在单个Linq语句中混合使用IEnumerable和IMaybe时,我偶然发现了一个问题 . Maybe monad看起来像 public interface IMaybe<T> { bool HasValue { get; } T Valu...
  • 1 votes
     answers
     views

    Haskell的State Monads

    我在Haskell中编写一个函数,它接受一个Java类文件,并编写另一个相同但包含一些修改的类文件 . 为此,我觉得我肯定需要一个状态monad来至少保存包含类文件所有字节的[Word8] . 然而,在我对Haskell的State Monads的所有研究之后,我仍然无法弄清楚如何做到这一点 . 谁能指出我正确的方向?我希望能够有一个[Word8](或者你知道,任何数据类型)在所有函数的范围内,我...
  • 0 votes
     answers
     views

    在Scala中以monadic方式测试HttpRequest

    假设我要在Scala中测试HTTP响应,以确保我的Web应用程序根据需要返回它们 . 例如,一个响应需要具有“status code”= Ok,“content-type:application / json”和“content-length”标头以及有效的JSON主体,另一个需要具有“status code”= Bad请求和错误消息等 假设我已经定义了一些函数来测试状态, Headers 和正文...

热门问题