You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行SWI-Prolog Simplex库coins示例时出现rationalize/1函数错误

解决SWI-Prolog simplex库coins示例的报错问题

你在运行simplex库的coins示例时遇到了两个问题:一个拼写错误警告,一个算术函数缺失的报错,咱们一步步来解决:

1. 处理开头的拼写警告

你看到的Warning: /home/vitorferraz/junk/coins.pl:1: Unknown message: simlpex(bounded)是因为拼写失误——把simplex写成了simlpex。打开你的coins.pl文件第一行,修正这个拼写错误,把simlpex改成simplex,这个警告就会消失。

2. 解决核心的rationalize/1报错

这个错误Arithmetic: 'rationalize/1' is not a function是因为你使用的SWI-Prolog版本(7.6.4)太旧了,rationalize/1是在SWI-Prolog 8.0及以后的版本才加入的内置算术函数,当前版本没有这个函数,导致simplex库调用时失败。

有两种可行的解决办法:

  • 升级SWI-Prolog版本:直接把SWI-Prolog升级到8.0或更高的稳定版本,新版本已经内置了这个函数,升级后再运行示例就能正常工作。
  • 手动实现rationalize/1:如果暂时无法升级,可以在你的coins.pl文件开头添加以下代码,手动实现这个函数的基础功能,让simplex库能正常调用:
    % 适配旧版本SWI-Prolog的rationalize/1基础实现
    rationalize(R) :- rational(R), !.
    rationalize(F) :- float(F), R is rational(F), rationalize(R).
    rationalize(N) :- integer(N), !.
    

你遇到的完整错误信息回顾

$ rlwrap swipl coins.pl
Warning: /home/vitorferraz/junk/coins.pl:1: Unknown message: simlpex(bounded)
Welcome to SWI-Prolog (threaded, 64 bits, version 7.6.4)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit http://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

1 ?- coins(S), variable_value(S, c(1), C1), variable_value(S, c(5), C5), variable_value(S, c(20), C20).
ERROR: Arithmetic: `rationalize/1' is not a function
ERROR: In:
ERROR:   [13] _5574 is rationalize(111)
ERROR:   [12] simplex:constraint_(0,[...|...]=111,state(0,[],[],[]),_5616) at /usr/local/lib/swipl-7.6.4/library/clp/simplex.pl:636
ERROR:   [10] coins(state(0,[],[],[]),_5664) at /home/vitor/coins.pl:8
ERROR:    [8] '<meta-call>'(user:(...,...)) <foreign>
ERROR:    [7] <user>
ERROR:
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

内容的提问来源于stack exchange,提问作者Vitor F.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:27:52