用其他語言鍵入應用程式
如果你熟悉 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
這也可以使用 ScopedTypeVariables
,Rank2Types
或 RankNTypes
這樣的擴充套件來明確。
doNothing::forall a. a -> a
doNothing x = x
然後在呼叫站點,我們可以再次寫 doNothing 5.0
或 doNothing @Float 5.0