RE: inlining higher-order-functions?
| My example is complicated, so let me present a simpler analogy. | Suppose I defined | | compose :: (b - c) - (a - b) - (a - c) | compose f g = \x - f (g x) | | I can easily persuade GHC to inline 'compose'. | But when 'compose' is applied to known arguments, I wish | f and g to be inlined in the body of 'compose'. | Is there a pragma that will do the trick? | (I attempted to put an INLINE pragma in a where clause, | but GHC was not amused.) You can put inline pragmas on f and g, thus frob = ... {-# INLINE frob #-} burk = ... {-# INLINE burk #-} wibble = compose from burk Now compose will be inlined (assuming it too has an INLINE pragma), and then frob, burk. Simon ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: inlining higher-order-functions?
Hello Norman, Friday, December 22, 2006, 8:23:57 AM, you wrote: compose :: (b - c) - (a - b) - (a - c) compose f g = \x - f (g x) ghc 6.6 added 'inline' function, see user docs. although only SPJ knows whether it can be used here: compose f g = inline (\x - f (g x)) -- Best regards, Bulatmailto:[EMAIL PROTECTED] ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
inlining higher-order-functions?
I've just discovered the {-# INLINE #-} pragma, but it's not doing as much for me as I had hoped. My example is complicated, so let me present a simpler analogy. Suppose I defined compose :: (b - c) - (a - b) - (a - c) compose f g = \x - f (g x) I can easily persuade GHC to inline 'compose'. But when 'compose' is applied to known arguments, I wish f and g to be inlined in the body of 'compose'. Is there a pragma that will do the trick? (I attempted to put an INLINE pragma in a where clause, but GHC was not amused.) Norman ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users