On 20/11/2010, at 12:33 AM, john skaller wrote: > > 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!
I just became a fan of labelled arguments! (** Create the state needed for lookup. *) let make_lookup_state print_flag counter varmap ticache sym_table = { let lookup_state = Flx_lookup.make_lookup_state syms.Flx_mtypes2.compiler_options.Flx_mtypes2.print_flag syms.Flx_mtypes2.counter syms.Flx_mtypes2.ticache syms.Flx_mtypes2.varmap sym_table in :) -- 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