This bug: Can't handle closure of case 1 of int -> unit + int
is two fold. First the function is shown as: typedef U = 1 + int; val f1 = case 1 of U; val u4 = f1 4; print u4; endl; So the function is "case 1 of (unit+int): int -> unit+int" and not what is shown in the diagnostic. The way to handle this is simply to define fun something (x:int) => (case 1 of U) x; and then val f1 = something; The problem in the old felix code (but I think NOT in Erick's new code) is that you have to invent a name for the function, and add it to both the unbound and bound symbol tables "on the fly". This is a mess. Ideally you'd add it to only the unbound symbol table and replace the closure "case 1 of U" in the val f1 line with "something". Then it would be bound. However then you have to make sure lookup will find it, which is a mess too :) Anyhow I think it is just slackness that I didn't implement this.. -- john skaller skal...@users.sourceforge.net ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language