pointfree相关内容

这可以用点自由风格表达吗?

给定以下表达式来对 IEnumerable 的数字求和: 让总和 l = l |>Seq.reduce(+)//版本a 是否有可能消除争论——就像这样? let sum = Seq.reduce(+)//版本b 我从 F# 编译器 (FS0030) 收到一个错误,我似乎记得我看到过一些关于“eta 转换"的内容,但不幸的是,我对 lambda calc 的了解太有限,无法了解 eta 转换 ..
发布时间:2022-01-05 10:03:44 其他开发

在 F# 中使用无点样式的非对称运算符的部分函数应用程序?

如何为非对称运算符(例如,关于 F# 中没有任何参数名称的第一个参数的模运算符)创建偏函数应用程序?我的第一次尝试是 let mod10 = (%) 10 这当然可以转化为 mod10(x) = 10 mod x 而不是想要的 mod10(x) = x mod 10.我当然可以写 let mod10 x = (%)x 10 但我不想命名参数所以有一些可以使用的占位符,比如 ..
发布时间:2022-01-05 09:48:01 其他开发

翻转/反转 fmap (<$>)?

我发现定义了以下内容 (%) = 翻转 fmap 我可以这样写代码: readFile "/etc/passwd" % lines % filter (not .null) 对我来说,这比替代方案更有意义: 过滤器(不是 .null)行 读取文件“/etc/passwd" 显然,这只是顺序问题. 有其他人这样做吗?是否有正当理由不编写这样的代码? 解决方案 你的操作 ..
发布时间:2022-01-02 14:00:32 其他开发

“免费积分"的优缺点是什么?函数式编程的风格?

我知道在某些语言(Haskell?)中,努力是实现无点风格,或者从不通过名称显式引用函数参数.这对我来说是一个很难掌握的概念,但它可能有助于我理解这种风格的优点(甚至可能是缺点)是什么.谁能解释一下? 解决方案 我相信目的是要简洁,并将流水线计算表达为函数的组合,而不是考虑通过线程参数.简单示例(在 F# 中) - 给出: let sum = List.sum让 sqr = List.m ..
发布时间:2022-01-02 13:55:27 其他开发

使数字函数成为 Num 的实例?

我希望能够使用二元运算符在 haskell 中组合数字函数.因此,例如,使用一元数字函数: f*g 应该翻译成: \x ->(f x)*(g x) 和加法类似.让你自己的操作符来做到这一点非常简单,但我真的很想让 Num a =>->a 作用于 Num 的实例,但我不知道该怎么做. 我也想让这个 arity 通用,但是这可能太麻烦了,因为在 Haskell 中执行 arity 通用函 ..
发布时间:2021-12-14 12:40:09 其他开发

实现一个函数来计算列表中每个元素的频率

我尝试编写一个程序来计算列表中每个元素的频率. 在:“aabbcabb"输出:[("a",3),("b",4),("c",1)] 您可以在以下链接中查看我的代码:http://codepad.org/nyIECIT2在这段代码中,唯一函数的输出是这样的 在:“aabbcabb"出:“abc" 使用 unique 的输出我们将计算目标列表的频率.您也可以在此处查看代码: freque ..
发布时间:2021-12-14 12:39:07 其他开发

可变组合函数?

我正在尝试编写一个可变参数函数组合函数.这基本上是 (.) ,除了第二个参数函数是可变参数.这应该允许以下表达式: map even .zipWith (+) 或者只是 map even .压缩包 目前,如果我添加 IncoherentInstances 并且需要第一个参数函数的非多态实例,我所达到的效果. {-# LANGUAGE FlexibleInstances, Overlapp ..
发布时间:2021-12-14 12:38:29 其他开发

我怎么理解 "(.) .(.)"?

我相信我理解 fmap .fmap 用于函子,但在函数上它已经让我头疼好几个月了. 我已经看到您可以将 (.) 的定义应用于 (.) .(.),但我忘了怎么做. 当我自己尝试时,结果总是错的: (.) f g = \x ->f (g x)(.) (.) (.) = \x ->(.) ((.) X)\x f ->(.) ((.) x) f\x f y ->(((.)(f y)) x)\x ..
发布时间:2021-12-14 12:31:17 其他开发

在haskell中具有多值函数的功能组合?

我想知道是否可以使用带有多个参数的函数进行函数组合.我希望能够做这样的事情 x = (+3).(*) 设置 x 等于一个函数,将两个数字的乘积加三. 解决方案 有多种方法可以做到,但都有些别扭. ((+3).) .(*)≡ fmap (+3) .(*)≡ 咖喱 $ (+3) .非咖喱 (*)≡ \l r ->l*r + 3 哦,等等,这是签名,还有一个紧凑的定义,猜猜它叫什么... ..
发布时间:2021-12-14 12:21:28 其他开发

以 pointfree 风格书写 f x = g x x

我正在学习 Haskell.很抱歉问了一个非常基本的问题,但我似乎找不到答案.我有一个由以下定义的函数 f: f x = g x x 其中 g 是一个已经定义的 2 个参数的函数.我如何编写这种 pointfree 风格?编辑:不使用 lambda 表达式. 谢谢 解决方案 f 可以用 Control.Monad.join: f = 加入 g 函数 monad 上的 joi ..
发布时间:2021-12-14 12:20:51 其他开发

Haskell 中的 Point Free 问题

我正在尝试将以下 Haskell 代码转换为指向自由样式,但无济于事. bar f g xs = filter f (map g xs ) 我是 Haskell 的新手,任何帮助都会很棒. 解决方案 转换为 pointfree 样式可以完全机械地完成,尽管如果不熟悉 Haskell 语法的基础(例如左关联函数应用程序和 x)会很难+ y 与 (+) xy 相同.我假设你熟悉 Haske ..
发布时间:2021-12-14 12:02:59 其他开发

组合函数组合: (.).(.) 是如何工作的?

(.) 有两个函数,它们接受一个值并返回一个值: (.) :: (b -> c) ->(a -> b) ->->C 由于 (.) 需要 两个 参数,我觉得 (.).(.) 应该是无效的,但它完全没问题: (.).(.) :: (b -> c) ->(a -> a1 -> b) ->->a1->C 这里发生了什么?我意识到这个问题措辞不好......由于柯里化,所有函数实际上只需要一个参数. ..
发布时间:2021-12-14 11:47:44 其他开发

在 Haskell 中柯里化 3 个参数

我在使用柯里化函数来删除 Haskell 中的三个参数时遇到问题. 免责声明:不是课程作业,今天有人向我提出了这个问题,这一直困扰着我. 我们得到的自定义类型/函数是(只能记住类型) 输入 MyThing=(字符,字符串)输入 MyThings= [我的事情]funcA :: MyThings ->字符串 ->细绳funcB :: MyThings ->字符串 ->内部 ->细绳 ..
发布时间:2021-12-14 11:45:16 其他开发

如何使用 (->) Monad 实例和关于 (->) 的混淆

在不同的问题中,我在关于使用 (->) 实例的 Monads 实例的评论中找到了提示,例如用于实现无点样式. 对我来说,这有点太抽象了.好的,我在 (->) 上看到了 Arrow 实例,在我看来,(->) 可以用在实例符号中,但不能用在类型中声明(这本身就是另一个问题的内容). 有没有使用 (->) 作为 Monad 实例的例子?或者好的链接? 抱歉,如果这里可能已经讨论过这个问 ..
发布时间:2021-12-14 11:36:52 其他开发

Haskell 中的参数数量和无点数

使用多个模式匹配,不同数量的参数是不可能的,即使是无点! foo 真 b = b + 2foo _ = id 例如不起作用.但是 foo True = (+2)foo _ = id 确实如此.有时我们只能在函数的一部分使用point-free,所以... 为什么?GHC 是不是太难了?:'( 解决方案 为什么?GHC 是不是太难了? 否.对于 GHC 来说一点也不难 ..
发布时间:2021-11-17 05:40:29 其他开发

Haskell - 将函数元组应用于值元组?

我有一个表示某个状态的值元组,并想通过加法(移位)来转换它.我的值是 (Int, [Int], Int) 的更长版本,我想要这样的概念(但不是字面意思): shift n = ???(+n) (id, map, id) -- 简单(?) 相当于: shift n (a, b, c) = (a+n, map (+n) b, c+n) 我很高兴使用这种明确的函数用法,但想知道是否有使用 App ..
发布时间:2021-11-16 23:11:40 其他开发