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)クラスの使用法については、 擬似クラスの項を見てください。