Allow TypeApplications syntax to be used to instantiate type variables in SPECIALISE pragmas
Currently the SPECIALISE
pragma requires that the user repeat the entire type of a binding to instantiate its types. This is often needlessly verbose and quite tiresome. Instead, why not allow the user to write the desired type as an application with TypeApplications
?
For instance, currently we might write,
foldWithOptionsAndParser :: forall m params. ( MonadIO m, MonadMask m, ToRow params )
=> FoldOptions
-> RowParser row
-> Connection
-> Query
-> params
-> a
-> (a -> row -> m a)
-> m a
foldWithOptionsAndParser opts parser conn template qs a f = ...
{-# SPECIALISE
foldWithOptionsAndParser :: FoldOptions -> RowParser row -> Connection -> Query -> params -> a
-> (a -> row -> IO a) -> IO a #-}
Instead we might want to write,
{-# SPECIALISE foldWithOptionsAndParser @IO #-}
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |