小编Fré*_*Bel的帖子

在Haskell quasiquoter中拼接任意表达式

阅读为什么引用很好,在第3节中有一个在quasiquote中拼接变量标识符的例子.

subst [:lam | $exp:e1 $exp:e2 |] x y =
    let e1' = subst e1 x y
        e2' = subst e2 x y
    in
        [:lam | $exp:e1' $exp:e2' |]
Run Code Online (Sandbox Code Playgroud)

我知道为什么递归调用subst是在外部完成的[:lam| ... |],这是因为antiVarE3.2节中的函数构建了一个TH.varE变量名.

我的问题是,除了变量名之外,还需要多少工作才能支持任意表达式拼接?

例如:

subst [:lam | $exp:e1 $exp:e2 |] x y =
      [:lam | $exp:(subst e1 x y) $exp:(subst e2 x y) |]
Run Code Online (Sandbox Code Playgroud)

haskell template-haskell

6
推荐指数
1
解决办法
200
查看次数

用于Haskell标识符的Haskell解析器组合器

我正在Haskell中编写一个反引号,我需要一个解析有效Haskell变量标识符的Parsec组合器.

是否已经在quasiquoting库中实现了一个或者我需要编写自己的库?

我希望我不需要复制/粘贴http://www.haskell.org/haskellwiki/Quasiquotation中ident实现.

haskell parsec

0
推荐指数
1
解决办法
339
查看次数

标签 统计

haskell ×2

parsec ×1

template-haskell ×1