Conditional structures: Difference between revisions
m
→{{header|Ol}}
No edit summary |
m (→{{header|Ol}}) |
||
Line 5,237:
=={{header|Ol}}==
if-then, the simplest conditional `if` primitive.
<syntaxhighlight lang="scheme">
(if (= (* 2 2) 4
(if (= (* 2 2) 6)
(print "if-then: should not be printed"))
; ==> if-then: equal
</syntaxhighlight>
if-then-else, the full conditional
<syntaxhighlight lang="scheme">
(if (= (* 2 2) 4
(print "if-then-else: non equal"))
; ==> if-then-else: equal
; ==> if-then-else: i don't know▼
(if (= (* 2 2) 6)
(print "if-then-else: equal")
(print "if-then-else: non equal"))
</syntaxhighlight>
when and unless, the
<syntaxhighlight lang="scheme">
(
; ==> when: ..just do something..
; ==>
; ==> unless: equal▼
(unless (= (* 2 2) 6)
; ==> unless: i don't know▼
(print "unless: ..just do something..")
(print "unless: not equal"))
▲; ==> unless: not equal
</syntaxhighlight>▼
if-then-else, extended conditional `if` primitive.
<syntaxhighlight lang="scheme">▼
(if (= (* 2 2) 4)
(print "if-then-else*: equal")
else
(print "if-then-else*: ..just do something..")
(print "if-then-else*: non equal"))
; ==> if-then-else*: equal
(if (= (* 2 2) 4)
then
(print "if-then-else*: ..just do something..")
(print "if-then-else*: equal")
else
(print "if-then-else*: ..just do something..")
(print "if-then-else*: non equal"))
; ==> if-then-else*: ..just do something..
; ==> if-then-else*: equal
(if (= (* 2 2) 4) ; same as `when`
then
(print "if-then-else*: ..just do something..")
(print "if-then-else*: equal"))
; ==> if-then-else*: ..just do something..
; ==> if-then-else*: equal
</syntaxhighlight>
Line 5,266 ⟶ 5,304:
<syntaxhighlight lang="scheme">
(case (* 2 2)
(3 ; exact number
(print "case: 3"))
(4 ; exact number
(print "case: 4"))
((5 6 7) ; list of numbers
(print "case: 5 or 6 or 7"))
(else
(print "case: i don't know")))
; ==> case: 4
▲</syntaxhighlight>
; extended case with usable else
(case (* 2 2)
▲<syntaxhighlight lang="scheme">
(3 ; exact number
(case (vector 'selector 1 2 3)▼
(print "case: 3"))
(else => (lambda (num)
(print "case: real value is " num))))
; ==> case: real value is 4
(case (* 2 2)
(3 ; exact number
(print "case: 3"))
(else is num
(print "case: real value is " num)))
; ==> case: real value is 4
; extended case with vectors
(['case1 x y]
(print "case: case1 " x ", " y))
Line 5,286 ⟶ 5,337:
(else
(print "case: i don't know")))
; ==>
</syntaxhighlight>
|