5

重複の可能性:
Haskell での関数の比較

私はhaskellを学んでいますが、このようなことが可能か知りたいですか? パラメータ「関数」が関数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

2 つの関数が等しいかどうかを比較できる唯一のケースは、それらのドメインに有限数の値がある場合です。たとえば、次のタイプの関数が 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 に答える