On 20/11/2010, at 12:24 AM, john skaller wrote:

> 
> CLIENT ERROR
> [bind_exe: fun_return ] return of  index_8651<8651>[<T8648>, <T8649>]:
> fun return type:
> list[<T8648>] -> list[<T8649>]
> must have same type as return expression:
> list[<T8648>] -> (list[<T8648>] -> list[<T8649>])
> In build/release-optimized/lib/std/list.flx: line 123, cols 1 to 3
> 122:     return aux x Empty[U];
> 123:   }
>     ***
> 124:
> 
> Clearly the same bug  .. why can't I see what it is?



Hmmm .... Here's the trick .. if a function f has index i, its
return type is initially set to

        arg -> Ti

where Ti is a type variable. This allows forming a term
based on the return type, and then solving for the 
type variables of several function at once (think mutually
recursive functions).

This is done by "do_unify". The variables are stored in state.syms.varmap.

They're both hashtables..


type typevarmap_t = (Flx_types.bid_t, Flx_btype.t) Hashtbl.t
  ticache : (bid_t, Flx_btype.t) Hashtbl.t;


OMG .. same type, I just bet I mixed them up!

--
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/msIE9-sfdev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to