2016-06-29 325 views
3

根據What does comparable mean in Elm?comparable是內置類型約束,可用於將類型變量限制爲那些可比較的內置類型。想到以下問題(並不容易找到):Elm中的類型約束

  • 什麼是目前存在於Elm中的其他類型約束?有沒有列表?
  • 有沒有辦法如何創建我自己的類型約束?我認爲答案是否定的,因爲Elm現在沒有像Haskell Typeclasses這樣的機制?
  • 如果上述條件爲真(無自定義類型約束),那麼這意味着Elm中的多態性非常有限,對嗎?例如,現在看來以下情況是無法實現的:我想創建一個函數f,它接受列表(相同但不確定類型的元素),其中每個元素都可以用作某個函數的參數g(即f接受List a而且inst存在a型意味着g(inst)有道理)
+0

你見過[這些](https://github.com/elm-lang/elm-compiler/issues/38)[two](https://github.com/elm-lang/elm-compiler/問題/ 1039)關於類型類的問題? – pdexter

+0

是的,我看到了這兩個。 OTOH,我看到有一個「可比」的概念,所以我不確定,這在榆樹中的地位如何。 –

回答

3

除了comparable(整數,浮點數,字符,字符串,列表和元組)也有appendable(字符串,文本和列表)和number(整數和浮點數)。我還沒有看到權威列表(編譯器源代碼之外)。

沒有辦法定義自己的類似類型類。

是的,這限制了您可以編寫的功能。沒有人確信埃文認爲這個限制是一個問題。

+0

謝謝,現在已經很清楚了。另外,看看Haskell開發人員構建的所有類型的東西,使類型類足夠強大(仍然有很多人咆哮!),我明白埃文不願意這樣做:) –