用其他語言鍵入應用程式

如果你熟悉 Java,C#或 C++等語言以及泛型/模板的概念,那麼這種比較可能對你有用。

假設我們在 C#中有一個泛型函式

public static T DoNothing<T>(T in) { return in; }

要用 float 來呼叫這個函式,我們可以做 DoNothing(5.0f),或者如果我們想要明確,我們可以說 DoNothing<float>(5.0f)。尖括號內的那部分是型別應用程式。

在 Haskell 中它是相同的,除了型別引數不僅隱含在呼叫站點而且隱含在定義站點。

doNothing::a -> a
doNothing x = x

這也可以使用 ScopedTypeVariablesRank2TypesRankNTypes 這樣的擴充套件來明確。

doNothing::forall a. a -> a
doNothing x = x

然後在呼叫站點,我們可以再次寫 doNothing 5.0doNothing @Float 5.0