Avoiding CAF's

Neil Mitchell ndmitchell at gmail.com
Wed May 16 05:15:36 EDT 2007


I'm trying to avoid CAF's being created, and I was wondering how is
the best way to do it with GHC. For example:

f = ....

Can I attach {-# INLINE #-} to f, and expect the CAF to be removed
that way? Is there any NOCAF annotation. I can always f _, then change
the callers to f () - if I'm doing that what is the most efficient
fake argument, and should I annotate f in any way? If the dummy
argument isn't used, is GHC going to float the let outside and re-CAF

The next example is:

foreign import ccall safe "stdio.h getchar" getchar2 :: CInt

Can I stop this being CAF'd in any way?

I'm working at a very low level here, so any hacky things with big
disclaimers are still appreciated.



More information about the Glasgow-haskell-users mailing list