If we have many constraints then compiling is sometimes too slow. Especially if there are some type calculations.
And I don't know how to divide this time among different source files because all constraints are checked only when we call a function.
I tried to add constraint info into argument definition instead of the function signature but this trick is not working (see below).
------------------------------------
$ stack ghci
---- GHCi, version 8.0.2:
Prelude> import Data.Proxy
Prelude Data.Proxy> import GHC.TypeLits
Prelude Data.Proxy GHC.TypeLits> :set -XRankNTypes
Prelude Data.Proxy GHC.TypeLits> let { f :: (KnownSymbol n => Proxy n) -> String; f = symbolVal }
<interactive>:4:54: error:
• No instance for (KnownSymbol n) arising from a use of ‘symbolVal’
Possible fix:
add (KnownSymbol n) to the context of
the type signature for:
f :: (KnownSymbol n => Proxy n) -> String
• In the expression: symbolVal
In an equation for ‘f’: f = symbolVal