[clean-list] Clean compiler bug

Martin Wierich martinw@cs.kun.nl
Tue, 06 Feb 2001 10:42:30 +0100


Hi Eli,

eli+@gs211.sp.cs.cmu.edu wrote:
> 
> "Clean compiler exited abnormally" is all it tells me. 
..
> Am I doing something illegal to trigger this bug?  Or, in any event,
> is there a workaround?

You are doing nothing illegal, it's a compiler bug. The only workaround I've
found is to specialize your functions to certain kinds of arrays (this will also
speed up your code). You can choose between lazy ({a}), strict ({!a}) and
unboxed ({#a}) arrays. The latter doesn't make sense when the array elements
can't be unboxed, like in the critical functions of your code. Your program
compiles well if you change for instance the following function types

  ev_pwc :: a u:(b v:(Event a)) -> .(c a)
         | ArrayElem a & Array .b & Array .c, [u <= v]
  ev_pwclist :: a [(.Time,a)] -> .(b a) | Array .b & ArrayElem a

into

  ev_pwc :: a u:(b v:(Event a)) -> .{!a}
        | Array b, [u <= v]
  ev_pwclist :: a [(.Time,a)] -> .{!a}

or even 

  ev_pwc :: a {!Event a} -> .{!a}

cheers
  Martin Wierich