Possible Duplicate:
Comparing functions in 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
最佳答案
据我所知,可以比较两个函数是否相等的唯一情况是它们的域具有有限数量的值。例如,如果您有两个类型的函数:
f, g :: Bool -> A
如果所有输入都相等,则它们相等:
f == g = (f False == g False) && (f True == g True)
但是,对于 Int
的情况,对 Int
的每个可能值进行比较是不切实际且低效的。对于Integer
,这是无法完成的,因为Integer
是无界的。
正如 @Miguel 在他的评论中正确指出的那样,具有非有限域的函数一般不能进行相等性比较。
关于function - 比较haskell中的函数和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215127/