Illegal use of linear functions [GHC-31574]
Starting with version 9.0, GHC supports linear types.
These types allow the programmer to express how often the argument to a function is used in the function body.
For this reason, a new function type a %1 -> b
has been introduced which stands for linear functions which use their argument of type a
exactly once.
In order to use these functions, however, the extension LinearTypes
has to be enabled.
Examples
Linear identity function needs LinearTypes extension
In this example, the programmer correctly implemented the identity function with a linear type signature.
This type signature correctly states that the identity function uses its argument exactly once.
In order to be able to use this type signature, the extension LinearTypes
has to be enabled.
messages/GHC-31574/linearIdentity/before/LinearIdentity.hs:3:21: error: [GHC-31574]
Illegal use of linear functions
Suggested fix: Perhaps you intended to use LinearTypes
|
3 | linearIdentity :: a %1 -> a
|
LinearIdentity.hs
Before
module LinearIdentity where
linearIdentity :: a %1 -> a
linearIdentity x = x
After
{-# LANGUAGE LinearTypes #-}
module LinearIdentity where
linearIdentity :: a %1 -> a
linearIdentity x = x