Comment by rntz
15 years ago
That's because of the way Arc does if-expressions. In Scheme and Common Lisp, you have two conditional forms: 'if and 'cond. 'if takes three arguments (or two, with an implied nil, in CL), and is analogous to an if-then-else in other languages:
> (if #t 'then 'else)
then
> (if #f 'then 'else)
else
'cond, in contrast, takes as many branches as you like, but they're parenthesized like so:
> (cond (#f 'a)
(#t (display "I can have a body here!\n")
'b)
(#t 'c))
I can have a body here!
b
In arc, there's just 'if, which is like 'cond with a lot of implicit parenthesization and else-branches:
arc> (if t 'then 'else)
then
arc> (if nil 'then) ; if no else-branch is given, nil is implied
nil
arc> (if nil 'a
t (do (prn "'do is like Scheme's 'begin or CL's 'progn.")
'b)
'else)
'do is like Scheme's 'begin or CL's 'progn.
b
No comments yet
Contribute on Hacker News ↗