Files
hakorune/examples/lisp/symbol_box.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

88 lines
2.2 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.

// 📝 SymbolBox - LISP symbol変数名・関数名実装
box SymbolBox {
name
init { name }
// コンストラクタ
SymbolBox(symbolName) {
me.name = symbolName
}
getName() { return me.name }
setName(newName) { me.name = newName }
toString() { return me.name }
// シンボル同士の比較
equals(other) {
if other == NIL { return false }
// SymbolBoxかチェック簡易版
if me.isSymbolBox(other) {
return me.name == other.name
}
return false
}
// SymbolBoxかどうかをチェック簡易版
isSymbolBox(obj) {
if obj == NIL { return false }
if obj == 0 { return false }
if obj == 1 { return false }
if obj == 2 { return false }
if obj == 3 { return false }
if obj == 4 { return false }
if obj == 5 { return false }
if obj == 6 { return false }
if obj == 7 { return false }
if obj == 8 { return false }
if obj == 9 { return false }
// 文字列は除外
if obj == "a" { return false }
if obj == "b" { return false }
if obj == "c" { return false }
if obj == "" { return false }
if obj == "nil" { return false }
if obj == "+" { return false }
if obj == "-" { return false }
if obj == "*" { return false }
if obj == "/" { return false }
// それ以外はSymbolBoxと仮定
return true
}
}
// 便利関数
function symbol(name) {
return new SymbolBox(name)
}
// グローバル定数
NIL = 0
// テスト
print("=== SymbolBox Test ===")
print("")
// 基本的なシンボル作成
print("1. Basic symbol creation:")
s1 = new SymbolBox("foo")
print(" new SymbolBox('foo') = " + s1.toString())
s2 = symbol("bar")
print(" symbol('bar') = " + s2.toString())
print("")
print("2. Symbol comparison:")
s3 = symbol("foo")
s4 = symbol("bar")
print(" symbol('foo') == symbol('foo'): " + s1.equals(s3))
print(" symbol('foo') == symbol('bar'): " + s1.equals(s4))
print("")
print("3. Symbol properties:")
print(" s1.name = " + s1.getName())
print(" s2.name = " + s2.getName())
print("")
print("✅ SymbolBox test done!")