Skip to content
  • Simon Peyton Jones's avatar
    [project @ 2004-12-06 10:58:06 by simonpj] · bfb87645
    Simon Peyton Jones authored
    ---------------------
    	Bug in specialisation
    	---------------------
    
    Laszlo managed to get a function like this:
    
    	foo :: Enum a => (# a, Int #)
    
    The specialiser specialised it, resulting in an unboxed tuple
    binding, which Lint objected to.
    
    This commit adds a dummy argument to the specialised function, 
    very like the case for strictness analysis.  For example, at
    type Char we'd get
    
    	foo_char :: State# RealWorld -> (# Char, Int #)
     	foo_char = \_ -> ...
    
    We use a State# type because it generates no argument-passing code 
    at runtime.  (We should really have some other void type for this 
    purpose, because State# is misleading, but this way avoids extra
    types.)
    bfb87645