Что делают эти квадратные скобки в Haskell?

Я прочитал код ниже в Проиндексированных Монады

{-# 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 ответов


Это quasiquotation синтаксис. См. также страница wiki. Текст между [ido| и |] передается дословно квазиквотеру ido, который использует его для генерации некоторого кода Haskell во время компиляции.