-
1 votesanswersviews
在Haskell中的ApplicativeDopragma和Applicative Functor
Functor, Applicative, and Monad的一个例子略有变化: {-# LANGUAGE ApplicativeDo #-} import Safe (readMay) -- import Control.Applicative ((<$>), (<*>)) displayAge maybeAge = case maybeAge of ... -
5 votesanswersviews
使用Bound与多个类型变量进行抽象
我一直在试用bound包 - 你可以尝试使用的一个玩具示例是系统F.与包文档中的示例不同,它包含一个由lambda绑定的变量的类型参数,System F将有两个类型参数,一个用于普通变量(由普通的lambda抽象绑定),一个用于类型变量(由类型抽象绑定) . 我不太明白如何使用该软件包,但是看一下这些示例,我得到的印象是我应该首先为表达式类型编写一个 Monad 实例 . 然而,我遇到了麻烦,因为... -
0 votesanswersviews
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 votesanswersviews
为什么不验证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 votesanswersviews
Monadic折叠与状态monad在恒定的空间(堆和堆栈)?
是否可以在常量堆栈和堆空间中在State monad中执行折叠?或者是一种不同的功能技术更适合我的问题? 接下来的部分将描述问题和激励用例 . 我正在使用Scala,但Haskell中的解决方案也是受欢迎的 . 折叠状态Monad填满堆 假设Scalaz 7.考虑一下州Monad的monadic折叠 . 为了避免堆栈溢出,我们将蹦蹦跳跳 . import scalaz._ import Scal... -
334 votesanswersviews
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 votesanswersviews
类型级无形:聚合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 votesanswersviews
Monad对申请人有什么好处?
我读过this article,但最后一节并不明白 . 作者说Monad给了我们上下文敏感性,但是只使用Applicative实例就可以实现相同的结果: let maybeAge = (\futureYear birthYear -> if futureYear < birthYear then yearDiff birthYear futureYear else ye... -
6 votesanswersviews
用于控制流程的Monad - 序列,选择和迭代
我可以看到你如何使用Monad是Haskell for IO - 围绕这个操作的计算创建一个容器 . 有意义的是,您可以使用Monads“将计算一起插入” - 就像为数据流操作组合函数一样 . 我只是喜欢grokking,你可以使用Monads进行控制流程 . 现在我理解控制流程是关于顺序,选择和迭代 . 现在我对高阶函数(如map,foldl,filter和zipwith / mapcat)感... -
12 votesanswersviews
我可以't understand Wikipedia'定义“applicative functor”
在Haskell中学习仿函数,应用函子和monad,我在Wikipedia找到了这个定义: 在函数式编程中,特别是Haskell,一个applicative functor是一个结构,就像一个没有连接的monad(return,fmap,join),或者像带有return的functor . 我无法理解:在我看来,将 return (即 pure )提供给仿函数并不足以获得一个应用仿函数,因为... -
11 votesanswersviews
Haskell中State的Functor / Applicative实例
在阅读(并略过一些部分)Wadler关于monad的论文之后,我决定更仔细地研究这篇论文,为他描述的每个monad定义函子和应用实例 . 使用类型同义词 type M a = State -> (a, State) type State = Int Wadler用来定义状态monad,我有以下(使用相关的名称,所以我可以稍后使用newtype声明定义它们) . fmap' :: (a -&... -
188 votesanswersviews
不是Functor / Functor / Applicative / Monad的好例子?
在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与... -
15 votesanswersviews
如何证明monad是一个仿函数和一个应用函子?
Monad在理论上被认为是仿函数的一个子集,特别是应用仿函数,尽管它没有在Haskell的类型系统中指出 . 知道这一点,给定一个monad并基于 return 和 bind ,如何: derive fmap , derive <*> ? -
3 votesanswersviews
应用函子和monad之间的等价性
人们说monad是应用函子的扩展,但我不是以应用函子为例: (<*>) :: f(a->b) -> f a -> f b [(+3)] <*> [2,3,4] 现在,我也期望我可以做与monad相同的事情,这意味着我可以应用2个参数:一个上下文包含一个函数,另一个上下文来获取一个上下文 . 但对于monad,我不能 . 我需要的只是写一个像这样丑陋的函数... -
188 votesanswersviews
不是Functor / Functor / Applicative / Monad的好例子?
在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与... -
188 votesanswersviews
不是Functor / Functor / Applicative / Monad的好例子?
在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子 . 所以,我请求示例: 一个不是Functor的类型构造函数 . 一个类型构造函数,它是一个Functor,但不是Applicative . 一个类型构造函数,它是一个Applicative,但不是Monad . 一个Monad的类型构造函数 . 我认为Monad到处都有很多例子,但Monad的一个很好的例子与... -
5 votesanswersviews
确定临时类型变量的范围
我有大量的vector类型的功能 f :: (M.MVector v r, PrimMonad m) => v (PrimState m) r -> v (PrimState m) r -> m () 这些函数大部分都是就地工作,所以将它们的参数变成一个可变向量很方便,这样我就可以编写,迭代等等 . 但是,在顶层,我只想使用不可变的“Haskell”/纯向量 . 以... -
6 votesanswersviews
可绑定的functor是更安全的DSL类型的有用抽象吗?
动机 我目前正在开发一个小爱好项目,尝试在Haskell中实现类似TaskJuggler的功能,主要是作为编写域特定语言的实验 . 我目前的目标是 Build 一个小型DSL来构建 Project 的描述,以及与之关联的 Task . 虽然这将是我的下一个扩展,但还没有层次结构 . 目前,我有以下数据类型: data Project = Project { projectName :: Text... -
19 votesanswersviews
应用仿函数更有趣
Earlier我问过翻译monadic代码只使用Parsec的applicative functor实例 . 不幸的是,我得到了几个回复,回答了我真正问过的问题,但并没有给我太多的了解 . 那么让我再试一次...... 总结我到目前为止的知识,一个应用函子比一个monad更受限制 . 在“少即是多”的传统中,限制代码可以做什么会增加疯狂代码操作的可能性 . 无论如何,很多人似乎相信使用applic... -
6 votesanswersviews
Monads和抽象
我是haskell,功能语言和monad的新手 .我已经搞乱了一个月左右;我已经阅读了learn you a haskell并且正在试图制作我的haskell网站 . 但是有些东西困扰着我:monads抽象 . 如果我理解正确,monad是可以排序的“数据容器” . 我可以用“>> =”解压缩它,例如“幕后工作”将为我做更多的工作,所以如果我没有monad定义,我必须猜测它将如何被解压... -
15 votesanswersviews
使用带有类型注释树的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 votesanswersviews
Monad“拆箱”
我按照教程Functors, Applicatives, And Monads In Pictures及其JavaScript version来提出问题 . 当文本说functor从上下文中解开值时,我理解发生了一个 Just 5 - > 5 转换 . 根据What does the "Just" syntax mean in Haskell?,只是 Maybe 的... -
5 votesanswersviews
Haskell中的Monadic类型检查器
我正在从BNFC开始在Haskell中编写解析器和类型检查器 . 类型检查器的主要功能实现如下: typecheck :: Program -> Err () typecheck (PDefs ds) = do env <- foldM (\env (DFun typ id args _ _) -> updateFun env id (... -
83 votesanswersviews
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 votesanswersviews
生成在另一个解析器的输出上运行接收的解析器的解析器,并单独加入结果
给定以下类型和函数,意味着将CSV字段的字段解析为字符串: type Parser resultType = ParsecT String () Identity resultType cell :: Parser String 我已经实现了以下功能: customCell :: String -> Parser res -> Parser res customCell typeN... -
-2 votesanswersviews
哈斯克尔州Monad协调员
我想弄清楚Monad的状态如何 . 我正在尝试实现一个获取两个坐标 (x, y) 并返回 x 或 y 坐标的函数 . 这应该发生在Monad州内 . data Coordin = Coordin {x,y :: Float} 应该实现的功能看起来像这样: getX :: State Coordin Float getY :: State Coordin Float 这怎么可行? 我试过这个: ... -
6 votesanswersviews
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 votesanswersviews
如何在一个Linq表达式中混合monadic结构?
我在C#中有一个Maybe monad的玩具实现,并且已经实现了与Linq一起使用的相关SelectMany扩展方法 . 当我尝试在单个Linq语句中混合使用IEnumerable和IMaybe时,我偶然发现了一个问题 . Maybe monad看起来像 public interface IMaybe<T> { bool HasValue { get; } T Valu... -
1 votesanswersviews
Haskell的State Monads
我在Haskell中编写一个函数,它接受一个Java类文件,并编写另一个相同但包含一些修改的类文件 . 为此,我觉得我肯定需要一个状态monad来至少保存包含类文件所有字节的[Word8] . 然而,在我对Haskell的State Monads的所有研究之后,我仍然无法弄清楚如何做到这一点 . 谁能指出我正确的方向?我希望能够有一个[Word8](或者你知道,任何数据类型)在所有函数的范围内,我... -
0 votesanswersviews
在Scala中以monadic方式测试HttpRequest
假设我要在Scala中测试HTTP响应,以确保我的Web应用程序根据需要返回它们 . 例如,一个响应需要具有“status code”= Ok,“content-type:application / json”和“content-length”标头以及有效的JSON主体,另一个需要具有“status code”= Bad请求和错误消息等 假设我已经定义了一些函数来测试状态, Headers 和正文...