Rename INLINABLE to SPECIALISABLE

Matthew Pickering matthewtpickering at gmail.com
Fri Jun 8 17:47:44 UTC 2018


INLINABLE also ensures the definition ends up in the interface files
so that the function is able to be inlined across modules.

Matt

On Fri, Jun 8, 2018 at 7:10 PM, Daniel Cartwright <chessai1996 at gmail.com> wrote:
> The "INLINABLE" pragma's name is misleading, it is more like
> "SPECIALISABLE". Consider the documentation for INLINABLE:
>
> Top-level definitions can be marked INLINABLE.
>
> myComplicatedFunction :: (Show a, Num a) => ...
> myComplicatedFunction = ...
>
> {-# INLINABLE myComplicatedFunction #-}
>
> This causes exactly two things to happens.
>
> The function's (exact) definition is included in the interface file for the
> module.
> The function will be specialised at use sites -- even across modules.
>
> Note that GHC is no more keen to inline an INLINABLE function than any
> other.
>
> I propose that we deprecate "INLINABLE" over a number of years at the same
> time as introducing "SPECIALISABLE". This wouldn't cause breakages for a
> long time.
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>


More information about the Libraries mailing list