【发布时间】:2014-09-22 03:20:28
【问题描述】:
我需要编写一个要在 GHCi 上运行的模块,并将函数组合到相同的函数。这个(经典的fog(x) = f(g(x)))运行:
(.) f g = (\x -> f (g x)).
当我尝试这样写时出现问题
(.) f f = (\x -> f (f x)). (fof(x) = f(f(x)))
GHCi 说:
"Conflicting definitions for `f'
Bound at: Lab1.hs:27:9
Lab1.hs:27:12"
第 27:9 行出现 f,第 27:12 行再次出现 f。
为什么 Haskell 不理解 (.) f f = (\x -> f (f x))?
【问题讨论】:
-
您是否尝试对两个参数相等的情况进行模式匹配?因为在这种情况下,您不仅会遇到语法问题(需要为不同的参数使用不同的名称),还会遇到概念问题(函数的相等性 - 通常 - 无法确定)。
-
你想要
twice f = \x -> f (f x)吗?
标签: haskell math ghci calculus