我在完成一项任务时遇到了麻烦,因为我要创建一个使用通用折叠函数来计算布尔AST的函数。我将向您展示一些示例来说明。首先,我想要一个例子,但对于一个对整数求和的AST: data Expr = Val Int | Add Expr Expr deriving Show
folde :: (Int -> a) ->现在是boolean AST和folding函数: data Bexp = T | F | And Bexp Bexp | Or Bexp Bexp deriving
正如在中所描述的,准引号主要是在Haskell中嵌入其他语言的有用工具,而不需要乱搞字符串引号。的问题是:对于Haskell本身来说,将现有的Haskell代码通过一个准商器来替换令牌并将结果传递给ghc有多容易呢?也许模板Haskell是这里的关键?一些EDSLs可以通过减少它们的复合操作符(例如,将'a .|. b .>>. c‘转到’myedsl_a b >> c')
我发现template-haskell中的Haskell代码并没有被表示为一个单独的AST,而是四种交叉引用类型:Pat、Exp、Dec和Type。我也没有在库中发现任何遍历工具,或者其他任何地方。我最初寻找的是上述四种类型的统一表示: -- The single representation for Haskell code
data HCode = HE Exp | HD Dec | HP Path'