Haskell中的这些方括号是什么?

时间:2013-05-05 07:01:39

标签: haskell monads ghc

我在Indexed Monad

中阅读了以下代码
{-# LANGUAGE QuasiQuotes #-}
import Control.Monad.Indexed.State
import Control.Monad.Indexed
import Language.Haskell.IndexedDo

hoge :: IxState Int [Int] ()
hoge = [ido|do
    imodify (*10)
    imodify show
    imodify reverse
    imodify (++"123")
    imodify $ map fromEnum
    |]

这些符号[|....|]的语法是什么?

它是某种语法糖吗?

1 个答案:

答案 0 :(得分:8)

这是quasiquotation语法。另请参阅wiki page[ido||]之间的文本将逐字传递给quasiquoter ido,后者使用它在编译时生成一些Haskell代码。