On 29/09/2013, at 3:38 PM, john skaller wrote:

> 
> 
>       var x = true, false, true;
>       x . 1 = true;
> 
> Note this code does not work at the moment (it will, I just haven't handled
> assignments with the new encoding scheme yet).


This code works:

        var bits = false, false, false, false, false;
        var q2 = bits :>> (2 * 2^3 * 2);

        var q3 = false, true, false;

        q2 . 1 = q3;
        println$ q2;

but this does not:

        q2 . 1 = false, true, false;

The reason is, the latter case is recognised as a parallel assignment.
It is coded (highly inefficiently) as:

        q2. 1 . 0 = false;
        q2. 1 . 1 = true;
        q2.1 . 2 = false;

However my assignment to compact linear code is bugged: it only
handles a single projection, so this:

        q2.1.0 = false;

looks like this:

        (q2.1).0  = false

and the code assumes the argument of the projection is an lvalue.

Assign to array component 2, array = (prj1:bool * bool^3 * bool -> bool^3 
q2<45382>)
Assign to array component 1, array = (prj1:bool * bool^3 * bool -> bool^3 
q2<45382>)
Assign to array component 0, array = (prj1:bool * bool^3 * bool -> bool^3 
q2<45382>)
/Users/johnskaller/.felix/cache/text/Users/johnskaller/felix/bits.cpp:712:18: 
fatal error: expression is not
      assignable
      PTF q2/2%8 = (PTF q2/2%8/2u*2u+0)*1u+PTF q2/2%8%1u; //assign to packed 
tuple
      ~~~~~~~~~~ ^
1 error generated.

Of course

        q2/2%8

is the correct value of the middle 3 bits, it's just not an lvalue.

The assignment code obviously needs to recursively descend into the LHS,
to find either:

        (a) A variable name
        (b) A dereference operator

To make the code work we have to unravel the projections, that is evaluate

        q3 . (1 . 0)

i.e. compose the projections.

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to