Что делают эти квадратные скобки в 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 во время компиляции.