Cancel

从Template Haskell(Haskell宏)来认识Haskell语法结构

Language

·

April 17, 2021

默认工作版本 ghc 8.10.4

从模板Haskell上看,主要有如下几种构造器:

Q Quotation

xxE属于 Exp,是xxExpression

xxP属于Pattern,是xxPatttern

genId :: Q Exp
genId = do
  x <- newName "x"
  lamE [varP x] (varE x)

等价于

genId = [| \x -> x |]  -- 也就是 genId = [| id |]

通常宏的返回值都是Q Exp意思是Quotation Expression

[ … ] 其实是[e … ]的简写

还有分别代表types、pattern,declaration的[t|...|], [p|...|], [e|...|]

实际上是

$([| e |]) = e

quote '

back-quote `

quasi-quote ~@

© minghu6

·

theme

Simplex theme logo

by golas