Hmm, so having a right-hand nildaic function passed to an operator simply doesn't work. Oh well, makes sense once you think about it. :-)
This was all part of experimentation I was playing around with while thinking about the power operator. Have you given that one any thought yet? Regards, Elias On 29 July 2014 19:55, Juergen Sauermann <juergen.sauerm...@t-online.de> wrote: > 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' > →0 > do¯then: > Z ← then arg > →0 > do¯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'}) 0* > was false > * ⊣ ({⎕←'was true'} SEL {⎕←'was false'}) 1* > was false > was 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 > > >