Conditional structures: Difference between revisions

Content added Content deleted
(added Ol)
Line 3,721: Line 3,721:
ifTrue: [ self ==0 ifTrue: [ 0 ] else: [ 1 ] ]
ifTrue: [ self ==0 ifTrue: [ 0 ] else: [ 1 ] ]
else: [ -1 ] ;</lang>
else: [ -1 ] ;</lang>

=={{header|Ol}}==
if-then, the simplest conditional primitive.
<lang scheme>
(if (= (* 2 2) 4) (print "if-then: equal"))
(if (= (* 2 2) 6) (print "if-then: non equal"))
; ==> if-then: equal
</lang>

if-then-else, the full conditional 'if' primitive.
<lang scheme>
(if (= (* 2 2) 4) (print "if-then-else: equal") (print "if-then-else: non equal"))
(if (= (* 2 2) 6) (print "if-then-else: non equal") (print "if-then-else: i don't know"))
; ==> if-then-else: equal
; ==> if-then-else: i don't know
</lang>

unless, the opposite for 'if'.
<lang scheme>
(unless (= (* 2 2) 4) (print "unless: non equal"))
(unless (= (* 2 2) 6) (print "unless: i don't know"))
(unless (= (* 2 2) 4) (print "unless: non equal") (print "unless: equal"))
(unless (= (* 2 2) 6) (print "unless: i don't know") (print "unless: non equal"))
; ==> unless: i don't know
; ==> unless: equal
; ==> unless: i don't know
</lang>

case, the sequence of comparing values.
<lang scheme>
(case (* 2 2)
(3
(print "case: 3"))
(4
(print "case: 4"))
((5 6 7)
(print "case: 5 or 6 or 7"))
(else
(print "case: i don't know")))
; ==> case: 4
</lang>

cond, the sequnce of comparators.
<lang scheme>
(cond
((= (* 2 2) 4)
(print "cond: equal"))
((= (* 2 2) 6)
(print "cond: not equal"))
(else
(print "cond: i don't know")))
; ==> cond: equal
</lang>

tuple-case, smart tuple comparer with variables filling.
<lang scheme>
(tuple-case (tuple 'selector 1 2 3)
((case1 x y)
(print "tuple-case: case1 " x ", " y))
((selector x y z)
(print "tuple-case: selector " x ", " y ", " z))
(else
(print "tuple-case: i don't know")))
; ==> tuple-case: selector 1, 2, 3
</lang>

case-lambda, selecting the lambda based on arguments count.
<lang scheme>
(define smart (case-lambda
((x)
(print x ", -, -"))
((x y)
(print x ", " y ", -"))
((x y z)
(print x ", " y ", " z))))
(smart 1) ; ==> 1, -, -
(smart 1 2) ; ==> 1, 2, -
(smart 1 2 3) ; ==> 1, 2, 3
</lang>


=={{header|ooRexx}}==
=={{header|ooRexx}}==