Files
hakorune/examples/simple_calculator.nyash
Moe Charm 0bed0c0271 🎉 initial commit: Nyash Programming Language完成版
🚀 主要機能:
• Everything is Box哲学による革新的アーキテクチャ
• WebAssemblyブラウザー対応プレイグラウンド
• アーティスト協同制作デモ - 複数Boxインスタンス実証
• 視覚的デバッグシステム - DebugBox完全統合
• static box Mainパターン - メモリ安全設計

 言語機能:
• NOT/AND/OR/除算演算子完全実装
• ジェネリクス/テンプレートシステム
• 非同期処理(nowait/await)
• try/catchエラーハンドリング
• Canvas統合グラフィックス

🎨 ブラウザー体験:
• 9種類のインタラクティブデモ
• リアルタイムコード実行
• WebCanvas/WebConsole/WebDisplay
• モバイル対応完了

🤖 Built with Claude Code collaboration
Ready for public release!
2025-08-09 15:14:44 +09:00

203 lines
4.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 🧮 シンプルNyash計算機 - Everything is Box実証
print("🧮 === Simple Nyash Calculator ===")
// デバッグ機能
DEBUG = new DebugBox()
DEBUG.startTracking()
// 🎯 式評価Box - シンプル版
box SimpleCalculator {
init { name, operations }
SimpleCalculator() {
me.name = "Nyash Simple Calculator"
me.operations = new ArrayBox()
}
// 加算
add(a, b) {
result = a + b
operation = "add(" + a + ", " + b + ") = " + result
me.operations.push(operation)
print(" " + operation)
return result
}
// 減算
subtract(a, b) {
result = a - b
operation = "subtract(" + a + ", " + b + ") = " + result
me.operations.push(operation)
print(" " + operation)
return result
}
// 乗算
multiply(a, b) {
result = a * b
operation = "multiply(" + a + ", " + b + ") = " + result
me.operations.push(operation)
print("✖️ " + operation)
return result
}
// 複合演算
complex(a, b, c) {
print("🔄 Complex operation: a + b * c where a=" + a + ", b=" + b + ", c=" + c)
// 演算子優先度を考慮: b * c を先に計算
step1 = me.multiply(b, c)
result = me.add(a, step1)
print("📊 Final result: " + result)
return result
}
// 履歴表示
showHistory() {
print("📚 Operation History:")
i = 0
loop(i < me.operations.length()) {
print(" " + (i + 1) + ": " + me.operations.get(i))
i = i + 1
}
}
}
// 🎯 数値ペアBox - ジェネリクス活用
box NumberPair<T> {
init { first, second }
NumberPair(a, b) {
me.first = a
me.second = b
}
sum() {
return me.first + me.second
}
product() {
return me.first * me.second
}
toString() {
return "Pair(" + me.first + ", " + me.second + ")"
}
}
// 📦 汎用コンテナBox - ジェネリクス実装
box Container<T> {
init { value }
Container(initialValue) {
me.value = initialValue
}
setValue(newValue) {
me.value = newValue
}
getValue() {
return me.value
}
}
// 🧮 高度計算Box
box AdvancedCalculator {
init { pairs, results }
AdvancedCalculator() {
me.pairs = new ArrayBox()
me.results = new Container<IntegerBox>(0)
}
// ペア追加
addPair(a, b) {
pair = new NumberPair<IntegerBox>(a, b)
me.pairs.push(pair)
DEBUG.trackBox(pair, "pair_" + me.pairs.length())
print("📦 Added pair: " + pair.toString())
return pair
}
// 全ペアの合計計算
calculateAllSums() {
print("🔢 Calculating sums for all pairs:")
totalSum = 0
i = 0
loop(i < me.pairs.length()) {
pair = me.pairs.get(i)
pairSum = pair.sum()
totalSum = totalSum + pairSum
print(" " + pair.toString() + " sum = " + pairSum)
i = i + 1
}
me.results.setValue(totalSum)
print("🎯 Total sum: " + totalSum)
return totalSum
}
// 全ペアの積計算
calculateAllProducts() {
print("✖️ Calculating products for all pairs:")
totalProduct = 1
i = 0
loop(i < me.pairs.length()) {
pair = me.pairs.get(i)
pairProduct = pair.product()
totalProduct = totalProduct * pairProduct
print(" " + pair.toString() + " product = " + pairProduct)
i = i + 1
}
print("🎯 Total product: " + totalProduct)
return totalProduct
}
}
// 🚀 メイン実行
print("🎯 Testing Simple Calculator...")
calc = new SimpleCalculator()
DEBUG.trackBox(calc, "main_calculator")
// 基本演算テスト
print("\n=== Basic Operations ===")
calc.add(5, 3)
calc.subtract(10, 4)
calc.multiply(6, 7)
// 複合演算テスト
print("\n=== Complex Operations ===")
calc.complex(2, 3, 4) // 2 + 3 * 4 = 14
calc.complex(1, 5, 2) // 1 + 5 * 2 = 11
// 履歴表示
print("\n=== History ===")
calc.showHistory()
// 高度計算器テスト
print("\n=== Advanced Calculator ===")
advCalc = new AdvancedCalculator()
DEBUG.trackBox(advCalc, "advanced_calculator")
// ペア追加
advCalc.addPair(3, 4)
advCalc.addPair(5, 6)
advCalc.addPair(2, 8)
// 計算実行
advCalc.calculateAllSums()
advCalc.calculateAllProducts()
// デバッグ情報
print("\n📊 === Debug Report ===")
print(DEBUG.memoryReport())
print("\n🎉 Simple Calculator completed!")
print("Nyashの Everything is Box 哲学による計算機が完成にゃ!")