據我所知,Haskell 中的代數資料型別可以有兩種形式,即總和(例如data Bool = True | False)或乘積(例如data Pair = P Int Double)。下面是一些具有空值和一元值建構式的資料型別。
data Z = Z
data S n = S n -- I think that this is a singleton type?
data S = S Int
這些型別是否被視為代數資料型別?如果有,它們叫什么?
uj5u.com熱心網友回復:
Z只是一個不同命名的單元型別。A1作為 ADT。換句話說,它是一個空的產品型別。(同樣,完全沒有建構式的型別可能被認為是空的 sum 型別。)
S n與自身同構n。在 ADT 的框架中,它被認為是等價的,即如果n是代數型別,那么也是S n。
但是請注意,在 Haskell 中,型別定義通常被故意視為不透明,以避免匯出值建構式。然后,該型別是一種抽象資料型別,而不是代數型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427304.html
