2016-07-09 53 views

risposta

7

Se state valutando è un'istanza di Lift, si può valutare che al momento della compilazione usando TemplateHaskell:

{-# LANGUAGE TemplateHaskell #-} 

module Sort where 

import Data.List 
import Language.Haskell.TH.Syntax 

myList :: [Int] 
myList = $(lift (sort [3,2,0,1] :: [Int])) 

Se si desidera, è possibile controllare ciò che ha compilato per con -ddump-splices :

$ ghc -ddump-splices sort 
[1 of 1] Compiling Sort    (sort.hs, sort.o) 
sort.hs:9:12-41: Splicing expression 
    lift (sort [3, 2, 0, 1] :: [Int]) ======> [0, 1, 2, 3]