mun*_*urs 5 haskell compare function
可能重复:
比较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
Run Code Online (Sandbox Code Playgroud)
据我所知,可以比较两个函数是否相等的唯一情况是它们的域具有有限数量的值。例如,如果您有两个类型的函数:
f, g :: Bool -> A
Run Code Online (Sandbox Code Playgroud)
如果所有输入都相等,则它们相等:
f == g = (f False == g False) && (f True == g True)
Run Code Online (Sandbox Code Playgroud)
然而,对于 的情况Int,对它们的每个可能值进行比较Int是不切实际且低效的。对于,由于s 是无界的,Integer因此无法完成。Integer
正如@Miguel 在他的评论中正确指出的那样,具有非有限域的函数一般不能进行相等性比较。