Kartik Agaram <[email protected]>
> > if
> > . {1 iso {x % 2}}
> > . \ 'odd
> > . :else
> > . \ 'even
>
> My complaint with this is that it doesn't sufficiently distinguish
> tests from branches. Especially since 'if' in arc/wart can have more
> than two branches. It also replaces 'cond' in lisp/scheme.
>
> I'm not entirely happy with any of the ways to format if/cond.
In a simple 2-way branch, I try to cuddle the condition right after "if" where
possible:
. if iso(1 {x % 2})
. . 'odd
. . 'even
A traditional cond-like expression is really easy with indentation,
modern-expressions, and curly infix:
cond
. evenp(a) a ;if a is even return a
. {a > 9} {a / 2} ;else if a is bigger than 9 return a/2
. {a < 2} {a - 1} ;else if a is smaller than 2 return a-1
. #t 17
=>
(cond
((evenp a) a) ;if a is even return a
((> a 9) (/ a 2)) ;else if a is bigger than 9 return a/2
((< a 2) (- a 1)) ;else if a is smaller than 2 return a-1
(#t 17))
If the right-hand expression is too long to cuddle on one line, just indent it
under its condition. No problem, and really clear.
(Sample inspired by http://www.cs.cmu.edu/~ggordon/lisp-hints.txt)
An Arc-like "if" is an interesting case. I think we're moving towards
SPLICE-at-front as being essentially a comment. If so, I can imagine that the
SPLICE could be used to highlight the what-to-do while leaving it at the same
level:
. if condition1()
. . \ do-condition1()
. . condition2()
. . \ do-condition2()
. . condition3()
. . \ do-condition3()
. . \ otherwise()
=> (if (condition1) (do-condition1)
(condition2) (do-condition2)
(condition3) (do-condition3)
(otherwise))
--- David A. Wheeler
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Readable-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/readable-discuss