Function 比较haskell中的函数和参数

Function 比较haskell中的函数和参数,function,haskell,compare,Function,Haskell,Compare,可能重复: 我在学习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

可能重复:

我在学习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
s是无界的,因此无法执行此操作


正如@Miguel在他的评论中正确指出的那样,非有限域的函数一般不能进行相等性比较。

我不是Haskell专家,但为了使用函数
(==)
,参数必须是
Eq
类型类的一部分,而且我不认为函数可以成为类型类的一部分。From:
没有,也永远不会有,一种比较两个函数是否相等的方法。有一个数学证明,这在一般情况下是不可能的。
@VincentSavard:instance Num b=>Num(a->b),其中(f+g)x=fx+gx--…@Fixnum:有趣!我对语法不太熟悉(我只能编写真正的基本程序),但有很多概念我必须研究!