The Panda Language: No Loops, No Ifs, Just Fun(pandalang.org)
pandalang.org
The Panda Language: No Loops, No Ifs, Just Fun
http://pandalang.org/
2 comments
rewritten apl version w/ lambdas and commute (vs assignment & parens):
{⍵/⍨⍵<50}{2*⍨⍵/⍨1=2|⍵}⍳10
1 9 25 49
About as short as I can make it, and while its longer than the pandas solution, the primitives are significantly more general (sqr, odd - why include these as language primitives?).Thanks! It's been a long time since I tried APL. All I could remember was ⍳ and right-to-left evaluation. The rest was through monkeying around with Rosetta Code examples.
As to your "why" question - I'm assuming to make a neat demo. Something like:
As to your "why" question - I'm assuming to make a neat demo. Something like:
>>> from math import cos, sin
>>> [s for i in range(50) if i&1 and cos(s:=i*i) < sin(i)]
[1, 9, 49, 225, 361, 441, 625, 1089, 1521, 1681, 2025, 2209]
seems more difficult to pull off in a pipeline API.nah its pretty straightforward w/ higher order fns.
one of many possible solutions:
one of many possible solutions:
{(1○⍺)>2○⍵} {(⍹ ⍵)/⍨⍵ ⍶ ⍹ ⍵} {⍵*2} {⍵/⍨2|⍵}⍳50
1 9 49 225 361 441 625 1089 1521 1681 2025 2209Oh, sorry, I was too clever by half. I should have been more specific - hard to pull off in Panda.
Thanks for an APL solution in any case!
Thanks for an APL solution in any case!
Reminds me of Ruby.
In case anyone's interested, here's a Ruby version:
(1..10).select(&:odd?).map{|x| x*x }.select{|x| x < 50 }
And here's my interpretation of the C equivalent:
Not quite a-la 1972, but then again the example 1972 code from that page wouldn't compile then either - variables had to be declared at the start of the function.
I wonder what the APL looks like. I hacked this solution:
but I'm guessing the real solution would be 1/3 the size.