在Haskell,其直白地創建一個數據類型遞歸樹,像我們用XML文件有: data XML =
Text String -- Text of text node
| Elem String [XML] -- Tagname; Child nodes
及其相關褶皺: -- Simple fold (Child trees don't see the surrounding
我創建了一個非常簡單的問題示例,我使用的是GADT和DataKinds。我的真實應用顯然更復雜,但這清楚地表明瞭我的情況的本質。我試圖創建一個函數,可以返回任何類型的值(T1,T2)的測試。有沒有辦法做到這一點,還是我進入依賴類型的領域?這裏的問題看起來很相似,但我無法從他們那裏找到(或理解)我的問題的答案。我剛剛開始瞭解這些GHC擴展。謝謝。 similar question 1 similar
我有僅曾經與兩個不同的參數,ForwardPossible和()中使用的GADT: -- | Used when a forward definition is possible.
data ForwardPossible = ForwardPossible deriving (Eq, Ord, Typeable, Data, Show)
-- | GADT which accepts fo
說我有以下GADT: data Stage a b where
Comb :: Stage a b -> Stage b c -> Stage a c
FMap :: (a -> b) -> Stage a b
我現在想要的是這樣的一個功能: run (a `Comb` b) = (a,b)
run (FMap f) = (FMap f,FMap id)
我將如何構
以下程序類型檢查和編譯: import Control.Arrow
data Ns = Na | Nb | Nc | Nd deriving Show
data Net a where
Uni :: a -> Net a
Serial :: Net a -> Net a -> Net a
Branch :: Show a => Net a -> Net (Ne