At present there's a "minor" bug in axiom_check causing two tests to fail:


 + build/release/bin/flx --static --output_dir=build/release/tut/tutorial 
-Ibuild/release/tut/tutorial --test=build/release -c --test=build/release 
build/release/tut/tutorial/tut-09.02-0.flx
Flx_egen: Waring: delayed virtual instantiation, external fun eq<1923>
CLIENT ERROR
Instantiate virtual function(2) eq<1923>, no instance for ts=int^2 -> int
In build/release/tut/tutorial/tut-09.02-0.flx: line 35, cols 1 to 57
34: 
35: axiom_check (add of (int * int), eq of (int * int), 1,2);
    *********************************************************
36: 

See also build/release/lib/std/order.flx: line 4, cols 17 to 32
3: typeclass Eq[t] {
4:   virtual fun eq: t * t -> bool;
                   ****************
5:   virtual fun ne (x:t,y:t):bool => not (eq (x,y));

I have no idea at the moment why it is trying to compare values of type 
int^2->int,
its basically a "false trigger" where some axiom happens to match the 
axiom_check
call you see above, and tries to compare add:int^2->int, The real bug is deeper:
the checks are only supposed to be generated when they can be instantiated.
Here, I am guessing the *top level* check is instantiated but itself contains
virtual calls, and the check generator didn't (recursively) instantiate them.

But this is a minor problem. The real problem is here:

Client Error binding expression (lt ((1, 1), (1, 2)))
CLIENT ERROR
[lookup_name_with_sig] Can't find lt of (int^2)^2
In build/release/test/regress/rt/tuple-01.flx: line 10, cols 10 to 22
 9: 
10: println$ (1,1) < (1,2);
             *************


Well, that's expected because I disabled the code:
/*
instance[t,u with Tord[t],Tord[u]] Tord[t*u] {
  fun lt: (t * u) * (t * u) -> bool =
  | (?x1,?y1),(?x2,?y2) => x1 <= x2 and y1 < y2
  ;
}
instance[t with Tord[t]] Tord[t*t] {
  fun eq: (t * t) * (t * t) -> bool =
  | (?x1,?y1),(?x2,?y2) => x1 <= x2 and y1 < y2
  ;
}
open[t,u with Tord[t], Tord[u]] Tord[t*u];
*/

Enabled .. it fails (which completely wipes the whole build out).
I have no idea why.  The pattern here is the same as for Eq.

Actually Tord and Eq are both implemented for arrays now
(I mean static arrays T^N])



--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to