awwx.ws

ret0

A let which also returns its value

http://awwx.ws/ret0.arc:

(mac ret (var val . body)
  (w/uniq gval
    `(withs (,gval ,val ,var ,gval)
       ,@body
       ,gval)))

Examples

arc> (ret a '(1 2 3 4) (prn (keep even a)))
(2 4)
(1 2 3 4)
arc> (ret (a b) '(foo bar) (prn (upcase a) b))
FOObar
(foo bar)

History

The ret macro was introduced by Sean Kenney in kwizwiz.arc, line 22. This version supports list destructuring.

License

Same as Arc.

Contact me

Twitter: awwx
Email: andrew.wilcox [at] gmail.com