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
[email protected]
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language