8
क्या यह सुनिश्चित करने का कोई तरीका है कि निम्नलिखित की तरह अभिव्यक्ति का संकलन समय पर मूल्यांकन किया जाएगा?संकलन समय पर शीर्ष-स्तरीय अभिव्यक्ति मूल्यांकन
myList :: [Int]
myList = sort [3,2,0,1]
क्या यह सुनिश्चित करने का कोई तरीका है कि निम्नलिखित की तरह अभिव्यक्ति का संकलन समय पर मूल्यांकन किया जाएगा?संकलन समय पर शीर्ष-स्तरीय अभिव्यक्ति मूल्यांकन
myList :: [Int]
myList = sort [3,2,0,1]
क्या आप का मूल्यांकन कर रहे Lift
का एक उदाहरण है, तो आप इसे संकलन समय पर TemplateHaskell
का उपयोग कर मूल्यांकन कर सकते हैं:
{-# LANGUAGE TemplateHaskell #-}
module Sort where
import Data.List
import Language.Haskell.TH.Syntax
myList :: [Int]
myList = $(lift (sort [3,2,0,1] :: [Int]))
आप चाहते हैं, तो आप जाँच कर सकते हैं क्या यह -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]
आप जेनरेटेड कोर को देख सकते हैं कि यह ऑप्टिमाइज़ेशन किया गया था या नहीं। लेकिन, AFAIK, उस पर बल देने का कोई तरीका नहीं है। – chi