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

Reply via email to