0
我對Haskell的類型表達了兩個問題:哈斯克爾類型的表達式
問題1 -
我想聲明一個類型節點
data NODE = Node String ATTR
和類型屬性包含3個子型如下:
來源布爾
目標布爾
鬼詮釋
data ATTR = Source Bool | Target Bool | Ghost Bool
但上面的聲明不符合該ATTR可以包含子類型,如的任何組合中的要求:
- ATTR可以同時包含Source Bool和Target Bool
- ATTR可以包含Source Bool,Target Bool和Gho ST詮釋一次
- ATTR甚至可以是空的(僅僅包含)
問題2 -
我想聲明一個類型圖,其中的圖可以含有1個或多個語句(STMTS),或者如果圖表爲空,則不包含語句。再次
data GRAPH = Graph String STMTS
data STMTS = STMT | STMTS
但是,正如你看到的遞歸數據類型支桿會重複infinitively:所以我聲明如下。
這聽起來像功課,所以這裏有一些提示。 Q1:考慮使用「也許」。 Q2:您需要考慮列表的另一個定義:data NonEmptyList a = Single a |許多a(NonEmptyList a)。不要擔心無限的數據結構; Haskell吃早餐。 –