15 hours ago
- 没有标准化的字符串——ISO只定义原子或字符码列表,导致不同实现之间不兼容。
- 没有函数——代码仅以返回true/false的谓词表达;像长度加1这样的简单操作需要多个步骤。
- 有限的集合类型——只有链表和复合项;没有内置的映射或结构体,自定义解决方案缺乏交叉兼容性。
- 布尔值缺失——true/false是控制流而非数据值,使得存储和组合中间结果不方便。
- 剪枝(!)令人困惑——它们阻止回溯但可能导致无效程序;条件语句依赖剪枝,导致意外行为。
- 失败即否定(\+)令人困惑——其行为依赖于实例化顺序,且不是纯声明式的。
- 查询默认是交互式的——一次性获取所有结果需要使用带存在量词(^)的bagof/setof,这不够直观。
- 符号项没有官方约定——例如a-b用于表示对但并非强制,导致潜在的不一致性。
- sort/2会移除重复项——它返回排序后的集合而非排序后的列表,需要繁琐的变通方法来保留重复项。
- 规则以句点结束——不允许末尾逗号,重新排列行会导致语法错误。