回答
如果不是因爲怪異的特殊語法,可以把它定義爲
data() =()
這是關於最無聊的類型存在。語法應該讓你想到元組:(a,b)
是一對,(a,b,c)
是一個三元組等,()
是一個0元組。唯一缺少的是1元組,它不能使用該語法,因爲它會與通常使用的括號發生衝突。
()
經常被用作沒有有趣結果的結果。例如,應該執行某些I/O並終止而不產生結果的IO
操作通常會有IO()
類型。當你需要一些無趣的輸入時也可以使用它; GHC有這種特殊的語法,但在Haskell 98模仿Lisp的cond
的方法是這樣的:
case() of
() | c1 -> e1
| c2 -> e2
...
| otherwise -> e3
這是完全有效的,但也非常無聊,問()
你有型的什麼價值;只有一個你可以擁有的合法的一個。
從「Haskell-as-almost-category」的角度來看,()
是一個最終對象。也就是說,對於任何類型的X
,都有正好一個類型X ->()
的合法功能,即。從另一個方向看,Void
型pigpersoner提到的是初始對象。對於任何類型的X
,都有正好一個類型Void -> X
的合法功能,即absurd
。如果你處於分類推理的情緒中,初始和最終對象可能會有用。
它被稱爲"unit type"。在某些方面,你可以把它看作是Haskell的相當於void
。這是一種只有一個值的類型(也是()
)。
FTR,它的Haskell相當於類似C的語言調用'void' _...,除了它在這些語言中根本不是一種類型。另外,「void」有點用詞不當,因爲單位類型實際上並不是空的。 Haskell也有一個['Void'類型](http://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Void.html),它真的是空的(也就是說,它表現得非常好不同於'()'或C-style'void')。 – leftaroundabout
Haskell中的'Void'與C中的'void'和Agda中的'()'以及Haskell中的'()'使我感到難過。當我在Haskell中提出現在是'Void'的類型時,我把它稱爲'Zero',如果只計算它的(非底部)居民,那麼它就更具有喚起性。我(驚喜地)驚訝於它在圖書館裏。這是一個實際的笑話,我的意思是我把它作爲一個笑話,但它也是實用的。 – pigworker
@pigworker:也許你的實際笑話[需要稍微微妙一點](https://xkcd.com/516/)... - 我同意'Zero'對於一般程序員來說可能不那麼令人困惑大衆,但如果它不是C,那麼'Void'的名字就會很好。當然,如果Haskell因此命名了免費的ADT類型,特別是''或''應該總是'+',那麼真正好的是什麼呢? – leftaroundabout
有很好的搜索引擎專門爲Haskell。
http://hayoo.fh-wedel.de/?query=()會給你立即正確答案:
Data
()
GHC-整潔-GHC.Tuple
單位數據類型()
有一個非未定義的成員,默認構造()
。
()
表示「無聊」。它意味着無聊的類型,它包含一件事情,也很無聊。通過比較無聊類型的一個元素和另一個元素來獲得沒有什麼有趣的東西,因爲沒有任何關於無聊類型的元素的任何關於它的知識。
它與Haskell Void
中稱爲(由我希望選擇一個更好的名字的人喜歡我所建議的名稱)的空類型非常不同。空的類型是非常令人興奮的,因爲如果有人給你一個屬於它的價值,你就知道你已經死了,在天堂裏,你想要的就是你的。
但是如果有人給你一個價值()
,別激動。把它扔掉。
有時採用通過「元素類型」進行參數化的類型構造函數很有趣,並使用()
填充參數。您可以看到類型構造函數中固有的信息,而不是來自元素。例如,Maybe()
是Bool
的版本,其中Just()
或Nothing
。另外,[()]
等於(可能是無限的)自然數:您擁有的唯一信息是長度。
因此,()
的意思是「乏味」,但它往往是一個線索,有趣的事情發生在別的地方。
- 1. 什麼是產生在Haskell
- 2. 是什麼。在Haskell中做什麼?
- 3. 這是什麼Haskell語法?
- 4. 什麼是Haskell`( - >)a` monad?
- 5. Haskell - 什麼是Control.Applicative.Alternative對嗎?
- 6. Haskell的擴展是什麼?
- 7. 什麼是Haskell的Stream Fusion
- 8. 「ls」在Haskell中的含義是什麼?
- 9. 語法在Haskell中@是什麼?
- 10. 什麼是$!在Haskell中意味着什麼?
- 11. Haskell的主要特性是什麼?
- 12. 什麼是Haskell中的嵌套模式?
- 13. Haskell中的非確定性是什麼?
- 14. 什麼是與Haskell「readFile」等效的Frege?
- 15. Haskell中的':'是什麼意思?
- 16. 什麼是Haskell中的「::」等價函數?
- 17. Haskell Prelude中'const'的含義是什麼?
- 18. Haskell中的ConcurrentHashMap的模擬是什麼?
- 19. Haskell的定義是什麼意思?
- 20. ++和:haskell之間的區別是什麼?
- 21. Haskell中的(:=)是什麼意思?
- 22. Haskell - Ord類型是什麼意思?
- 23. Haskell中的實例是什麼意思?
- 24. haskell中的「&」是什麼意思?
- 25. Haskell中的showS詭計是什麼?
- 26. Haskell中「fac」的含義是什麼?
- 27. Haskell稱之爲Hom Functor/Monad是什麼?
- 28. 什麼是接口的haskell等價物?
- 29. Haskell - 什麼是過時的函數
- 30. Haskell中「〜」的含義是什麼?
[()函數變量和應用程序中可能的重複](http://stackoverflow.com/questions/29970012/in-function-variable-and-application) – rightfold
@Elyse,我沒有看到這個問題作爲一個理想的複製目標。這有點混亂。 – dfeuer