|
From: | Elias Mårtenson |
Subject: | Re: [Bug-apl] Subtle parsing problem |
Date: | Tue, 29 Jul 2014 20:11:25 +0800 |
Hi Elias,
this is because your lambdas are niladic. The right lambda is called before SEL,
while the left lambda is called by SEL. From SEL's perspective, 'then'; is a function
while 'else' is a value.
/// Jürgen
On 07/29/2014 07:21 AM, Elias Mårtenson wrote:
I was writing an operator that acts as an "if"-statement, calling one of two functions depending on the value of the argument:
∇Z ← (then SEL else) arg→(arg=1)/do¯then→(arg=0)/do¯else⎕ES 'Illegal value for arg'→0do¯then:Z ← then arg→0do¯else:Z ← else arg∇
Note that the then and else functions are called with an argument "arg". When I call this operator with two nihilic lambda functions, I get very strange behaviour:
⊣ ({⎕←'was true'} SEL {⎕←'was false'}) 0was false⊣ ({⎕←'was true'} SEL {⎕←'was false'}) 1was falsewas true
I would expect to get an error message here, or perhaps seeing (⎕NC '⍵') to be 0. I certainly didn't expect to see both functions be called. My suspicion is that there is a problem with the parser somewhere, but I think Jürgen will have to look at this one.
Regards,Elias
[Prev in Thread] | Current Thread | [Next in Thread] |