有没有选项,除了-O0可以加快编译时间?
如果生成的程序不会被优化,那也没关系.实际上我想经常快速地检查大型haskell包.
Flag -fno-code大大加快了编译速度,但由于此程序使用了TemplateHaskell,因此无法使用它.
Sing从GHC.TypeLits使用是否有任何开销?例如对于该程序:
{-# LANGUAGE DataKinds #-}
module Test (test) where
import GHC.TypeLits
test :: Integer
test = fromSing (sing :: Sing 5)
Run Code Online (Sandbox Code Playgroud)
GHC生成核心代码:
Test.test1 :: GHC.Integer.Type.Integer
[GblId,
 Str=DmdType,
 Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
         ConLike=True, WorkFree=True, Expandable=True,
         Guidance=IF_ARGS [] 100 0}]
Test.test1 = __integer 5
Test.test :: GHC.Integer.Type.Integer
[GblId,
 Str=DmdType,
 Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
         ConLike=True, WorkFree=True, Expandable=True,
         Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
Test.test =
  Test.test1
  `cast` (<GHC.TypeLits.NTCo:SingI> <GHC.TypeLits.Nat> <5> ; (<GHC.TypeLits.TFCo:R:SingNatn
                                                                 <5>> ; <GHC.TypeLits.NTCo:R:SingNatn
                                                                           <5>>)
          :: GHC.TypeLits.SingI GHC.TypeLits.Nat 5
               ~#
             GHC.Integer.Type.Integer)
Run Code Online (Sandbox Code Playgroud)
这个代码的等价Test.test = …