arrows

    6热度

    1回答

    假设我有f :: u -> v -> w和g :: x -> y -> z。我想要的是h :: (u,x) -> (v,y) -> (w,z)。 所以,我可以去了解这个手动: h (u,x) (v,y) = (f u v, g x y) 哪来的乐趣呢? 使用(***)我可以中途有: (f *** g) :: (u,x) -> (v -> w, y -> z) 但我想不出如何获取最后一英里。

    1热度

    1回答

    我的问题是以下几点。 我有这样的XML文件来分析: <DATAS LANG="en"> <SCENARIO ID="19864"> <ORIGIN ID="329"> <SCENARIO_S ERR="0"></SCENARIO_S> <SCENARIO_S ERR="2"></SCENARIO_S> </ORIGIN> </SCENARIO> <

    15热度

    2回答

    通常你有类似Applicative而没有pure,或类似Monad,但没有return。 semigroupoid包裹涵盖这些案件与Apply和Bind。现在我处于类似的情况,涉及Arrow,我无法定义一个有意义的arr函数,但我认为其他函数会非常有意义。 我定义保存函数类型和它的反向功能: import Control.Category data Rev a b = Rev (a -> b)

    1热度

    3回答

    一些使用箭头的函数在成对使用时非常方便。但我不明白这些功能的类型是如何与一对相结合的。一般来说,我发现箭头相关函数的类型相当混乱。 例如,我们有first :: a b c -> a (b, d) (c, d),这对我来说意义不大。但它可以被用来,比如说,增加一对的第一个数字: Prelude Control.Arrow> :t first (+1) first (+1) :: (Num b)

    5热度

    1回答

    我在哪里可以找到源代码,是隐藏语言编译 {-# LANGUAGE Arrows #-} 我读过根据文件(如Paterson, A New Notation for Arrows),所以理论上有什么情况是清楚的后面。现在我想看看,它是如何被转换为源代码的。 我的所有搜寻仅供参考GHC的用户指南或Control.Arrow的来源。 我在这里错过了什么吗?

    22热度

    2回答

    在箭头符号中,可以使用rec关键字来编写递归定义。例如: rec name <- function -< input input <- otherFunction -< name 这怎么能评估?它似乎会进入一个无限循环或什么东西。我知道它评估到循环箭头组合器,但我不明白这是如何工作。 编辑:这个权力的例子真的很有帮助。尽管如此,你会如何写这个符号?我假设你需要使用rec。

    5热度

    1回答

    我想从使用HXT的6行XML输入中提取一些数据。我也想保留HXT,因为Curl整合,因为我有其他XML文件,后面有成千上万行。 我的XML看起来是这样的: <?xml version = "1.0" encoding = "UTF-8"?> <find> <set_number>228461</set_number> <no_records>000000008</no_rec

    6热度

    1回答

    也许我错了,但是我正在使用HXT来读取我想在HOpenGL的一个数组中使用的顶点数据。顶点数组需要是通过调用newArray创建的Ptr。不幸的是,newArray会返回一个IO Ptr,所以我不知道如何在Arrow中使用它。我想我需要一个类似于IO的类型声明 - > Arrow a?

    3热度

    2回答

    我目前正在通过纸张Programming with Arrows由约翰·休斯 读,我已经难倒第一运动,在2.5节,在第20 我们有我们所掌握的Arrow和ArrowChoice类型类,如以及函数实例,流函数[a] -> [b]以及通过Kleisli类型的单目函数a -> m b。 一个mapA已经给出: mapA f = arr listcase >>> arr (const [])

    6热度

    1回答

    我想解析一个XML,但我想过滤和提取一个给定的节点只有确定数量的孩子。例如: <root> <node id="a" /> <node id="b" /> <node id="c" /> <node id="d" /> </root> 然后,如果我执行箭头getChildren >>> myFilter 2,我还是会回到只有ID节点“A”和“B”。 直