Root Cause: Dua bug:
parse-lambdaparameter loop tidak check:op-rparensebelum panggilparse-identifiereksekusi-lambda—paramsberisiidentifier-node, bukan string. Key di environment jadi node, tapi lookup pakai string.
Fix:
src/parser.lisp— tambah(when (parser-check state :op-rparen) (return))di loop parametersrc/eksekutor.lisp—(id-name p)untuk convert node ke string
Root Cause: SBCL save-lisp-and-die selalu print return value toplevel lambda.
Fix: Wrapper script ./idn — filter ^NIL$ dengan grep -v. Plus sb-ext:quit di akhir toplevel untuk clean exit.
Sama dengan Bug 1 (lambda parsing).
Fix: src/objek.lisp — fungsi idn-repr untuk konversi nilai IDN → string rapi.
Handle: nil→"kosong", true→"benar", false→"salah", integer, float, string, symbol, array, hash.
Fix: stdlib/kelas-patch.lisp — patch terpisah untuk dispatch method call pada class objects.
Support: Kelas.baru(), static methods via KELAS_METODE naming convention.
8 warnings tersisa: redefinisi fungsi, unused variable. Tidak mempengaruhi runtime.
| # | Item | Status |
|---|---|---|
| 1 | Lambda parsing crash | ✅ |
| 2 | NIL output | ✅ |
| 3 | blok.idn | ✅ |
| 4 | idn-repr | ✅ |
| 5 | KELAS-IDN handler | ✅ |
| 6 | Warning cleanup |
324/324 tests | 10/10 contoh | Semua fitur berfungsi