5

可能重复:
比较 Haskell 中的函数

我正在学习haskell,想知道这样的事情可能吗?我只想比较参数'function'是否等于函数a或b之一。这个怎么做?

示例代码:

a,b :: Integer -> Integer
a x = x+1
b x = x-1

c function parameter = if function == a 
           then ... parameter -- Do a related stuff
           else ... parameter -- Do b related stuff
4

1 回答 1

2

我知道在哪里可以比较两个函数是否相等的唯一情况是它们的域是否具有有限数量的值。例如,如果您有两个类型的函数:

f, g :: Bool -> A

如果它们对所有输入都相等,则它们是相等的:

f == g = (f False == g False) && (f True == g True)

但是,对于 的情况Int,在每个可能的值上比较它们Int是不切实际且低效的。因为s 是无界的Integer,所以无法做到。Integer

正如@Miguel 在他的评论中正确指出的那样,通常无法比较具有非有限域的函数是否相等。

于 2012-11-04T01:24:22.183 回答