Jump to content

Conditional structures: Difference between revisions

m
No edit summary
Line 5,237:
 
=={{header|Ol}}==
if-then, the simplest conditional `if` primitive.
<syntaxhighlight lang="scheme">
(if (= (* 2 2) 4) (print "if-then: equal"))
(if (= (* 2 2) 6) (print "if-then: non equal"))
(if (= (* 2 2) 6)
(print "if-then: should not be printed"))
; ==> if-then: equal
</syntaxhighlight>
 
if-then-else, the full conditional '`if'` primitive.
<syntaxhighlight 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"))
(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"))
; ==> if-then-else: inon don't knowequal
</syntaxhighlight>
 
when and unless, the oppositesimplification forof '`if'.` without `begin`
<syntaxhighlight lang="scheme">
(unlesswhen (= (* 2 2) 4) (print "unless: non equal"))
(unless (= (* 2 2) 6) (print "unlesswhen: i..just don'tdo knowsomething.."))
(unless (= (* 2 2) 4) (print "unless: non equal") (print "unlesswhen: equal"))
; ==> when: ..just do something..
(unless (= (* 2 2) 6) (print "unless: i don't know") (print "unless: non equal"))
; ==> unlesswhen: i don't knowequal
 
; ==> unless: equal
(unless (= (* 2 2) 6)
; ==> unless: i don't know
(print "unless: ..just do something..")
(print "unless: not equal"))
; ==> unless: i..just don'tdo knowsomething..
; ==> 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
additionally, case can select vectors with variables filling
(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
(case (vector ['selector 1 2 3)]
(['case1 x y]
(print "case: case1 " x ", " y))
Line 5,286 ⟶ 5,337:
(else
(print "case: i don't know")))
; ==> tuple-case: selector 1, 2, 3
</syntaxhighlight>
 
9

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.