scrap-your-boilerplate

    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表达式。 理想情况下,我可以使用模板哈希克尔或其他东西来自动

    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。 我想要的是自动