Wenn das, was Sie die Bewertung eine Instanz von Lift
ist, können Sie es bei der Kompilierung mit TemplateHaskell
bewerten:
{-# LANGUAGE TemplateHaskell #-}
module Sort where
import Data.List
import Language.Haskell.TH.Syntax
myList :: [Int]
myList = $(lift (sort [3,2,0,1] :: [Int]))
Wenn Sie möchten, können Sie überprüfen, was es zu zusammengestellt mit -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]
Sie können den generierten Kern prüfen, um zu sehen, ob diese Optimierung durchgeführt wurde. Aber, AFAIK, gibt es keine Möglichkeit, das zu erzwingen. – chi