given(x):
when(1, 2, 3):
say("x == 1 or 2 or 3")
when(4, 5):
say("x == 4 or 5")
default:
say("x == unknown")
もともとは初期化ファイル群の中の control.cy で定義されていましたが、
展開に時間がかかりすぎていたため、組み込みのマクロにしました。
cond:
(x > 0):
say("x > 0")
(x < 0):
say("x < 0")
else:
say("x == 0")
let^(&opt a = 1, b = 2):
say(a + b)
let(loop)^(&opt lst = [1, 2, 3]):
unless(lst.null?()):
say(lst.car())
loop(lst.cdr())
二つ目の例は、scheme の named let に当たります。
# 例
class(A)^(B):
c = 0
def(init)^:
.d = 0
def(f)^(x):
.parent.c -= x
.d += x
def(g)^:
&(.parent.c, .d)
# 上のコードは、次のコードと等価です。
begin:
A = B.child()
A.c = 0
def(A.init)^:
.d = 0
def(A.f)^(x):
.parent.c -= x
.d += x
def(A.g)^:
&(.parent.c, .d)
クラスの使用法については、
擬似クラスの項を見てください。