// 🚀 最小版LISP - 動作確認用 // 基本的な算術計算のみ実装 NIL = 0 // データ構造 box ConsBox { car cdr init { car, cdr } ConsBox(a, d) { me.car = a me.cdr = d } getCar() { return me.car } getCdr() { return me.cdr } toString() { return "(" + me.car.toString() + " . " + me.cdr.toString() + ")" } } // 基本関数 function cons(a, d) { return new ConsBox(a, d) } function car(pair) { if pair == NIL { return NIL } return pair.getCar() } function cdr(pair) { if pair == NIL { return NIL } return pair.getCdr() } // リスト作成 function list2(a, b) { return cons(a, cons(b, NIL)) } function list3(a, b, c) { return cons(a, cons(b, cons(c, NIL))) } // 超シンプル評価器 - 数値の加算のみ function simpleEval(expr) { // 数値リテラルはそのまま返す if expr == 0 { return 0 } if expr == 1 { return 1 } if expr == 2 { return 2 } if expr == 3 { return 3 } if expr == 4 { return 4 } if expr == 5 { return 5 } if expr == 6 { return 6 } if expr == 7 { return 7 } if expr == 8 { return 8 } if expr == 9 { return 9 } // リストの場合 operator = car(expr) arg1 = car(cdr(expr)) arg2 = car(cdr(cdr(expr))) // 文字列の加算演算子チェック if operator == "+" { return simpleEval(arg1) + simpleEval(arg2) } if operator == "*" { return simpleEval(arg1) * simpleEval(arg2) } if operator == "-" { return simpleEval(arg1) - simpleEval(arg2) } return 0 // エラーの場合 } // テスト print("🚀 === Minimal LISP Test === 🚀") print("") print("1. Basic data structures:") p1 = cons(1, 2) print(" cons(1, 2) = " + p1.toString()) print(" car = " + car(p1)) print(" cdr = " + cdr(p1)) print("") print("2. Simple evaluation:") // (+ 1 2) を手動構築 expr1 = list3("+", 1, 2) print(" Expression: " + expr1.toString()) result1 = simpleEval(expr1) print(" Result: " + result1) print("") print("3. Nested expression:") // (+ 1 (* 2 3)) inner = list3("*", 2, 3) expr2 = list3("+", 1, inner) print(" Expression: " + expr2.toString()) result2 = simpleEval(expr2) print(" Result: " + result2) print("") print("✅ Minimal LISP working!") print("🎯 This proves the concept - now we can build more features!")