On Saturday, September 3, 2016 at 4:13:20 PM UTC+2, Andrew Dabrowski wrote:
>
> But what about nested pattern matching, or destructuring, isn't that much
> easier in Mathematica than Julia? For example defining a function of two
> lists by
> f[{w_,x_}, {y_,z_}]:=x y/(w+z).
>
> I remember reading the Julia manifesto a few years ago, where the stated
> goal was to create a single computing language that would replace Fortran,
> scipy, Mathematica, Matlab, etc. simultaneously. I thought at the time
> that it sounded nuts.
>
> Can we all agree now that it was, in fact, nuts?
>
This is already implemented in SJulia:
sjulia 1> f([w_,x_], [y_,z_]) := x * y/(w+z)
sjulia 2> f([a,b],[c,d])
Out(2) = b*c*((a + d)^(-1))
I have implemented several of Mma's pattern matching features. But, Mma's
pattern matching is sophisticated. I have not implemented, for instance,
associative-commutative matching, which Mma considers "structural"
matching. I experimented a bit with using SJulia features from julia.
Without looking at it now, I guess it would take some work to access the
pattern matching.
Maybe you can also do this kind of destructuring matching with this
https://github.com/toivoh/PatternDispatch.jl
which aims to add pattern matching to method dispatch.