阅读为什么引用很好,在第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中编写一个反引号,我需要一个解析有效Haskell变量标识符的Parsec组合器.
是否已经在quasiquoting库中实现了一个或者我需要编写自己的库?
我希望我不需要复制/粘贴http://www.haskell.org/haskellwiki/Quasiquotation中的ident实现.