scrap-your-boilerplate

    3熱度

    2回答

    所以,我有具有大量的情況下,這是由一種「註釋」類型 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或泛型,並避免在每種情

    3熱度

    2回答

    與this question相關我今天早些時候問過。 我有大量的案例,這是由「註釋」型 data Expr ann def var = Plus a Int Int | ... | Times a Int Int deriving (Data, Typeable, Functor) 我有具體事例爲高清和VAR參數的AST數據類型,說Def和Var。 我想要的是自動

    0熱度

    2回答

    所以我有,我要崩潰了其中節點是類型 data Node = Node1 Node | Node2 Node Node | ... deriving Data 的除少數特殊情況下的樹。我想做的事的 collapse SPECIALCASE1 = ... collapse SPECIALCASE2 = ... ... collapse node = foldl (++) $ gmapQ va

    9熱度

    2回答

    我在學習GHC仿製藥。在回顧了幾個例子之後,我想嘗試創建一個通用的Functor實例(不管GHC能爲我自動推導它們)。然而,我意識到我不知道如何使用泛型的參數化數據類型,我見過的所有例子都是*。這是可能的,如果是的話,如何? (我對SYB等其他類似框架也很感興趣。)

    5熱度

    2回答

    使用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" ...

    8熱度

    2回答

    在Scrap your boilerplate reloaded中,作者描述了Scrap Your Boilerplate的新演示文稿,它應該與原文相同。 然而,一個區別是,它們假定一個有限的,閉集「基地」類型,具有GADT data Type :: * -> * where Int :: Type Int List :: Type a -> Type [a] ...

    8熱度

    1回答

    我有一個類型類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

    1熱度

    1回答

    我想了解Constr類型的Data.Data包。考慮下面的會議。 dataTypeConstrs返回一列Constr,這是Maybe的零參數和單參數構造函數。由於明顯的類型錯誤,試圖重新創建列表失敗。 GHC關於Constr價值的特殊行爲是什麼? $ ghci GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help Prelu

    1熱度

    1回答

    我一直在使用一段時間的廢料樣板函數。儘管如此,我試圖編譯一個模塊,它導入了Data.Data和Data.Typeable,但編譯器找不到一些函數,如everywhere和mkT。 GHC新版本中的這些功能在哪裏?

    3熱度

    1回答

    我想創建一些代碼,可以採取任何遞歸語法數據類型和該數據類型的任何表達式,併產生一個相同類型的所有子表達式的列表,建立起來的,種類就像一個scan這個類型的遞歸。 我已經爲伴隨的玩具計算器語法類型EExp編寫了兩個手動示例。第一個示例使用Lens庫中的棱鏡和透鏡,僅適用於一個eg1示例表達式,而第二個函數僅使用手動代碼,但可用於任何EExp表達式。 理想情況下,我可以使用模板哈希克爾或其他東西來自動