我使用simple quasiquoter from the Haskell Wiki表示多行字符串。
import Language.Haskell.TH
import Language.Haskell.TH.Quote
str = QuasiQuoter { quoteExp = stringE }
我收到以下警告:
Fields of ‘QuasiQuoter’ not initialised: quotePat, quoteType,
quoteDec
In the expression: QuasiQuoter {quoteExp = stringE}
In an equation for ‘str’: str = QuasiQuoter {quoteExp = stringE}
压制此警告的正确方法是什么?我应该初始化quotePat等,也许是未定义或其他什么?
答案 0 :(得分:1)
如果您只对定义用于表达式的quasiquoter感兴趣,可以使用quoteExp定义一个QuasiQuoter,并将其他字段留下错误。
所以使用未定义的字段QQ似乎没问题。如果你想压制战争,你可以试试:
qqUndef = QuasiQuoter {quoteExp = undefined ,
quotePat = undefined ,
quoteType = undefined,
quoteDec = undefined }
-- replace only quoteExp
str = qqUndef { quoteExp = stringE }