[Haskell-cafe] constraint inference

Dmitry Olshansky olshanskydr at gmail.com
Fri Jul 7 05:50:29 UTC 2017

Hello, cafe!

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).

Is it (at least theoretically) possible to infer the constraint inside a
function from the type of function's argument?

$ 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

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170707/a92f3c04/attachment.html>

More information about the Haskell-Cafe mailing list