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

117 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.

// 📦 ConsBox - LISPのcons cell実装 v2
// ファクトリー関数アプローチ
box ConsBox {
car
cdr
init {
car, cdr
}
func getCar() {
return me.car
}
func getCdr() {
return me.cdr
}
func setCar(value) {
me.car = value
}
func setCdr(value) {
me.cdr = value
}
// シンプルな文字列表現
func toString() {
carStr = "nil"
if (not NullBox.check_null(me.car)) {
carStr = me.car + ""
}
cdrStr = "nil"
if (not NullBox.check_null(me.cdr)) {
cdrStr = me.cdr + ""
}
return "(" + carStr + " . " + cdrStr + ")"
}
}
// ファクトリー関数cons
function cons(car, cdr) {
result = new ConsBox()
result.car = car
result.cdr = cdr
return result
}
// ファクトリー関数:リスト作成
function list1(a) {
return cons(a, new NullBox())
}
function list2(a, b) {
return cons(a, cons(b, new NullBox()))
}
function list3(a, b, c) {
return cons(a, cons(b, cons(c, new NullBox())))
}
// car/cdr アクセサ関数
function car(pair) {
return pair.getCar()
}
function cdr(pair) {
return pair.getCdr()
}
// テストコード
print("🎯 === ConsBox v2 Test ===")
print("")
// 基本的なペア
print("1. Basic cons cell:")
pair1 = cons(1, 2)
print(" (cons 1 2) = " + pair1.toString())
// リスト作成
print("")
print("2. List creation:")
list_a = list1("hello")
print(" (list1 'hello') = " + list_a.toString())
list_b = list2(10, 20)
print(" (list2 10 20) = " + list_b.toString())
list_c = list3("a", "b", "c")
print(" (list3 'a' 'b' 'c') = " + list_c.toString())
// car/cdr操作
print("")
print("3. car/cdr operations:")
test = cons(42, "world")
print(" test = " + test.toString())
print(" (car test) = " + car(test))
print(" (cdr test) = " + cdr(test))
// ネストしたリスト
print("")
print("4. Nested lists:")
inner = list2(1, 2)
outer = cons(inner, list1(3))
print(" ((1 2) 3) = " + outer.toString())
// 空リスト
print("")
print("5. Empty list:")
empty = new NullBox()
print(" '() = " + empty)
print("")
print("✅ ConsBox v2 tests completed!")