関数定義
{ square dup * }
または
{ square | x | x x * }
Bank Account
class BankAccount
float dollars accessor
{ deposit:
self :dollars :+ self :setDollars }
{ withdraw:
:negate self :dollars :+ 0 :max self :setDollars }
end
BankAccount :new -> MyAccount
200 MyAccount :setDollars
MyAccount :dollars :p cr # 200.000000
50 MyAccount :deposit
MyAccount :dollars :p cr # 250.000000
100 MyAccount :withdraw
MyAccount :dollars :p cr # 150.000000
200 MyAccount :withdraw
MyAccount :dollars :p cr # 0.000000
動物クラス
class 生物
end
class 哺乳類 super{ 生物 }
end
class 両生類 super{ 生物 }
end
mixin 鳴ける
{ 鳴け: }
end
class 犬 super{ 鳴ける 哺乳類 }
{ 鳴け: " わんわん" :print cr }
end
class 猫 super{ 鳴ける 哺乳類 }
{ 鳴け: " にゃぁにゃぁ" :print cr }
end
class 蛙 super{ 鳴ける 両生類 }
{ 鳴け: " けろけろ" :print cr }
end
# 「鳴ける」というmixinを指定して鳴く。
犬 ポチ
猫 タマ
蛙 ケロッピ
( ポチ タマ ケロッピ ) [ as 鳴ける :鳴け ] :each
VectorとMap
# 1から10の数値をそれぞれ2倍。
( 1 .. 10 ) [ 2 * ] :map
Accumulator Generator
{ foo | n | [ n :+ -> n ]~ }
My Loop
{ myLoop | fn: cond fn: body | recursive
if cond then
body
` cond ` body myLoop
endif
}
{ main | : i |
10 -> i
[ i >: 0 ; print: i -- i ] myLoop
}