【发布时间】:2014-09-22 04:09:02
【问题描述】:
这就是问题所在,我需要编写众所周知的两次函数
(twice= \x-> \x-> x)
但这次使用(.) 组合函数,如(.) f g。
我不知道怎么解决,因为我一开始以为是这样的:
(.) f g = (\x -> f (g x))
(g = f) 会是这样的
(.) f f = (\x -> f (f x))
但我有一个
“'f' 的定义冲突”
在 GHCI 上运行
那么,有什么建议吗?
【问题讨论】:
-
我认为你还没有 Haskell 的基本语法(还)——这似乎是 lambda-calculus 和 Haskellish 语法之间的混合——也许你可以写更多关于这是从哪里来的。与此同时,你可以看看我的回答,看看我会如何假设
twice并“解决”它 -
好吧,事情就是这样,我实际上正在学习一门新课程,它被称为“计算基础”,就像你提到的 lambda-calculus 和 Haskell 语言的混合。他们试图教这两件事。我的两次将函数 f 两次应用于争论 x。然后他们要求我解决问题,但这次使用 (.) 组合函数。你提到的这对我来说非常困难:他们一直混合使用 Haskell 和 lambda-calculus。
-
确实很容易如果你得到你的
twice正确 -
在我看来,同一个问题的两个变体 - 当这两个函数可能相同时,如何定义两个函数的组合。
标签: haskell math lambda lambda-calculus