{-# 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
|]
这些符号[|....|]
的语法是什么?
它是某种语法糖吗?
答案 0 :(得分:8)
这是quasiquotation语法。另请参阅wiki page。 [ido|
和|]
之间的文本将逐字传递给quasiquoter ido
,后者使用它在编译时生成一些Haskell代码。