I took sacado's code and tweaked it a bit (Ruby's push appends and Arc's push prepends). Here's the result. If someone can get rid of my joinstr function and make the prn line closer to the Ruby version in conciseness, then I think Arc does pretty well.
For this challenge, it's important to have the output match exactly - that's why the rev is necessary and the complicated print. I do string interpolation all the time in Ruby, so I wanted to see how easy/hard it was in Arc to produce lines such as [ 1, 5, 8, 6, 3, 7, 2, 4 ]
I might as well limit the code to ArcN also.
I think the following may be the only working version of Arc code that passes this challenge so far.
Having to use point is a bit awkward, but not too bad. I particularly like the function composition such as abs:- and the more concise len.stack notation. The [ string sep _ ] notation is definitely a winner also. I'm pretty pleased with the core language so far - kudos to pg & rm.
arc> (help prall)
(from "arc.arc")
[fn] (prall elts (o init ) (o sep , ))
Prints several arguments with an initial header and separated by a
given separator.
Above function also exists in Arc2.
Instead of (point return ...(return ...)) try using (catch ...(throw ...)).
Final nitpick: I think it's rtm, not rm, although, well, I dunno. ^^