To add to the confusion, while
        (  {+⌿ ÷ ≢} y)  ≡ ( +⌿y) ÷  ≢y
        (x {+⌿ ÷ ≢} y)  ≡ (x+⌿y) ÷ x≢y
whatever that does.
I completely agree, it’s quite obscure, especially if one is not accustomed to
tacit definition. This by the way is a fork, and is basically a way to avoid
parentheses. More useful however is the bonding operator, which I know
is functional in Dyalog:
        toCelsius       ←((5÷9)∘×)∘(-∘32)
        toFahrenheit    ←toCelsius⍣¯1
        toFahr toCelsius 212
212

Which can be very handy.
Louis

> On 05 Mar 2016, at 16:33, Elias Mårtenson <loke...@gmail.com> wrote:
> 
> On 5 March 2016 at 23:28, Louis de Forcrand <ol...@bluewin.ch 
> <mailto:ol...@bluewin.ch>> wrote:
> That would be a great idea. However, it would indeed take not only quite a 
> bit of
> time to set up, but would also need constant checking to make sure the updates
> in the main branch don’t conflict with additions.
> While I just said that I believe the main branch should probably concentrate 
> on
> the standard, one of the things I’ve really fallen in love with in J and that 
> is
> completely missing in standard APL is tacit definition. Not only does it allow
> inversible functions and idiom detection for optimisation, but it is just 
> simply
> so elegant:
>       mean ← +⌿ ÷ ≢
> 
> This is where we disagree, but nothing wrong with that. I can certainly 
> understand why someone would like that construct, but I just don't like it at 
> all. I think this is probably the least clear and easily the most confusing 
> language construct I know of in any language I have tried.
> 
> I would certainly like to see some simpler way to define such functions 
> without multiple levels of lambda definitions, but the J model is not the 
> right way, in my opinion.
> 
> Regards,
> Elias 

Reply via email to