2013-05-05 9 views
6

Tôi đọc mã dưới đây vào Indexed MonadNhững dấu ngoặc vuông này trong Haskell là gì?

{-# 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 
    |] 

cú pháp của các biểu tượng này [|....|] là gì?

Có một số loại đường cú pháp không?

+1

Đây là [Template Haskell] (http://www.haskell.org/haskellwiki/Template_Haskell). –

Trả lời

8

Đây là cú pháp quasiquotation. Xem thêm wiki page. Các văn bản giữa [ido||] được chuyển nguyên văn cho người quasiquoter ido, sử dụng nó để tạo ra một số mã Haskell tại thời gian biên dịch.