所以,我有具有大量的情況下,這是由一種「註釋」類型 data Expr a = Plus a Int Int
| ...
| Times a Int Int
我有參數的AST數據類型註釋類型S和T,以及一些功能f :: S -> T。我想採用Expr S並將其轉換爲Expr T,使用我的轉換f對每個S發生在Expr值內。 有沒有辦法做到這一點使用SYB或泛型,並避免在每種情
與this question相關我今天早些時候問過。 我有大量的案例,這是由「註釋」型 data Expr ann def var = Plus a Int Int
| ...
| Times a Int Int
deriving (Data, Typeable, Functor)
我有具體事例爲高清和VAR參數的AST數據類型,說Def和Var。 我想要的是自動
使用SYB只將一次轉換應用到一棵樹而不是everywhere的最佳方式是什麼?例如,在下面的簡化表達式中,有幾個Var "x"的實例,我只想用Var "y"替換第一個實例。 data Exp = Var String | Val Int | Plus Exp Exp |... myExp = Val 5 `Plus` Var "x" `Plus` Val 5 `Plus` Var "x" ...
在Scrap your boilerplate reloaded中,作者描述了Scrap Your Boilerplate的新演示文稿,它應該與原文相同。 然而,一個區別是,它們假定一個有限的,閉集「基地」類型,具有GADT data Type :: * -> * where
Int :: Type Int
List :: Type a -> Type [a]
...
我有一個類型類Cyclic我希望能夠提供泛型實例。 class Cyclic g where
gen :: g
rot :: g -> g
ord :: g -> Int
考慮之類無參構造函數, data T3 = A | B | C deriving (Generic, Show)
我要生成實例相當於這一個: instance Cyclic T3 where
我想了解Constr類型的Data.Data包。考慮下面的會議。 dataTypeConstrs返回一列Constr,這是Maybe的零參數和單參數構造函數。由於明顯的類型錯誤,試圖重新創建列表失敗。 GHC關於Constr價值的特殊行爲是什麼? $ ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelu