Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 函数类型与类型变量的等价性_Function_Haskell_Types - Fatal编程技术网

Function 函数类型与类型变量的等价性

Function 函数类型与类型变量的等价性,function,haskell,types,Function,Haskell,Types,我需要一个具有以下属性的函数 (c->d)->(a->b->c)->a->b->d 我的职能: funktionD=()。() 但是:t funktionD 功能d::(a->b)->(c->d->a)->c->d->b 这是相等的吗?我想是的。将a替换为c(反之亦然),然后将b替换为d(反之亦然),它们都是一样的。确实如此。类型变量——用小写字母写——就是这些变量。只要相同变量的模式保持不变,就可以随意重命名它们 此外,出于基本相同的原因,对于您给出的类型签名,只有一个该类型的可能函数(不包括

我需要一个具有以下属性的函数

(c->d)->(a->b->c)->a->b->d

我的职能:

funktionD=()。()

但是:t funktionD

功能d::(a->b)->(c->d->a)->c->d->b


这是相等的吗?

我想是的。将a替换为c(反之亦然),然后将b替换为d(反之亦然),它们都是一样的。

确实如此。类型变量——用小写字母写——就是这些变量。只要相同变量的模式保持不变,就可以随意重命名它们


此外,出于基本相同的原因,对于您给出的类型签名,只有一个该类型的可能函数(不包括崩溃或进入无限循环的函数,即)。想一想

为什么不自己替换类型变量并尝试一下呢?你也可以在函数定义上面写
funktionD::(c->d)->(a->b->c)->a->b->d
,如果类型错误,编译器会告诉你的。@matrixprog:这也是一个很好的建议。永远不要低估先发制人地与Haskell编译器争论的价值。仅仅因为它总是赢得争论并不意味着你不能在这个过程中学到一些东西!