Re: Potential design space of LET/assignment

On 11/11/2009 20:15, Lee Feigenbaum wrote:
>> Because it's a conceptual join, per row, you allow solutions where the
>> same value is already bound to the named variable?
>
> Right.
>
>> (PS But what happens about errors in evaluation?)
>
> If the expr evaluates to a type error, I intended to have that discard a
> solution if the variable were already bound, and act as a no-op
> otherwise. But re-looking now I have a few bugs in the handling there.

ARQ does the same.

Nothing about errors in is the defn of extend for FPWD - that was just 
enough to outline the SELECT-expr design.

>>> The explanation in that message doesn't really get at the details of the
>>> 3-argument algebraic forms in the document, which is what I'm most
>>> interested in. The def'n there says:
>>>
>>> extend(μ, var, term) = { (x,t) | x in dom(μ) and t = μ(v) or x = var and
>>> t = term }
>>>
>>> First, I assume mu(v) should be mu(x)?
>>
>> Yes.
>>
>>> Second, I don't understand how
>>> this definition treats the case in which mu already binds var to a value
>>> different from term. Best I can read is that you end up with solution
>>> that has 2 bindings for x, but I'd be surprised if that's the intention,
>>> so I imagine I'm reading it wrong?
>>
>> A solution mapping is a function so there can only be one x binding.
>>
>> (x,t) for x in dom(μ) and t != μ(v) is not in the set.
>>
>> Better would be:
>>
>> { (x,t) |
>> (x in dom(μ) and t = μ(x)) or (x not in dom(μ) and t = term)
>> }
>
> So this says that the LET assignment is ignored completely if the
> variable is already bound.That's different from what I do. Am I
> understanding this correctly?

The assignment is not ignored - the solution is not in the outcome which 
is like your per-row join description.

I will try to rework that part of the FPWD soon.  As well as write down 
the SELECT-LET transformations.

Do you have a formulation to describe what Glitter does?

 Andy

>
> Lee

Received on Wednesday, 11 November 2009 22:18:14 UTC