2011-05-16 49 views
3

我需要以下屬性的功能。與類型變量等價功能類型的

(C-> d) - >(A-> B-> C) - > A-> B-> d

我的功能:(。)

funktionD = 。

但():噸funktionD

funktionD ::(A - > B) - >(C - > d - >一) - >Ç - > d - >乙

是不是等於?

+2

爲什麼不自己替代的類型變量,並嘗試一下? – delnan 2011-05-16 17:56:12

+2

您也可以只寫'funktionD ::(C-> d) - >(A-> B-> C) - > A-> B-> D'你上面的函數定義,如果類型是錯誤的編譯器會告訴你。 – MatrixFrog 2011-05-16 22:30:12

+1

@MatrixFrog:這也是一個很好的建議。永遠不要低估搶先與Haskell編譯器爭論的價值。僅僅因爲它總是贏得爭論並不意味着你在這個過程中無法學到東西! – 2011-05-16 22:50:43

回答

4

它。類型變量 - 以小寫字母寫 - 就是變量。只要其中相同變量的模式保持不變,您可以重新命名它們。

此外,本質上是相同的理由,你給類型的簽名,只有一個(不包括崩潰或進入無限循環的功能,這是)該類型的可能的功能。需要思考的東西!

2

我覺得是。用c替換a(反之亦然),然後用d替換b(反之亦然),它們是相同的。