如何修复QuasiQuoter警告?

时间:2016-08-15 08:56:35

标签: haskell template-haskell

我使用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等,也许是未定义或其他什么?

1 个答案:

答案 0 :(得分:1)

来自https://hackage.haskell.org/package/template-haskell/docs/Language-Haskell-TH-Quote.html#t:QuasiQuoter

  

如果您只对定义用于表达式的quasiquoter感兴趣,可以使用quoteExp定义一个QuasiQuoter,并将其他字段留下错误。

所以使用未定义的字段QQ似乎没问题。如果你想压制战争,你可以试试:

qqUndef = QuasiQuoter {quoteExp = undefined , 
                       quotePat = undefined , 
                       quoteType = undefined,
                       quoteDec = undefined }

-- replace only quoteExp
str = qqUndef { quoteExp = stringE }