如何将数字列表转换为 Prolog 中的单词列表?
How to convert a list of numbers to a list of words in Prolog?
我正在尝试编写一个 Prolog 程序,以便给定像 [1, 2, 3]
这样的数字列表,它会将它们转换为表示这些数字 ['one', 'two', 'three']
.
的单词列表
到目前为止我的代码:
totext(0, 'zero').
totext(1, 'one').
totext(2, 'two').
totext(3, 'three').
totext(4, 'four').
totext(5, 'five').
totext(6, 'six').
totext(7, 'seven').
totext(8, 'eight').
totext(9, 'nine').
translate([], []).
translate([Head|Rest], [TranslatedHead|TranslatedRest]) :-
totext(Head, TranslatedHead),
translate(Rest, TranslatedRest).
当我加载 gprolog
并查阅文件时,如果我这样做:
translate([], X).
我正确地得到:
X = []
yes
但是当我这样做时
translate([1,2], X).
我得到:
uncaught exception: error(existence_error(procedure,totext/0),translate/0)
我是 Prolog 的新手(这是我的第一个 Prolog 程序),我不知道这里出了什么问题。有任何想法吗?谢谢。
您的代码已更正,但您的 GNU Prolog 构建已损坏。从源代码重新编译 GNU Prolog 应该可以修复它。损坏的 GNU Prolog 构建的常见症状是谓词存在错误,其中谓词总是报告为零,通常不存在于被调用的代码中。
P.S。损坏的 GNU Prolog 安装似乎通常在使用 Ubuntu 时发生。你能确认你也是这种情况吗?
我正在尝试编写一个 Prolog 程序,以便给定像 [1, 2, 3]
这样的数字列表,它会将它们转换为表示这些数字 ['one', 'two', 'three']
.
到目前为止我的代码:
totext(0, 'zero').
totext(1, 'one').
totext(2, 'two').
totext(3, 'three').
totext(4, 'four').
totext(5, 'five').
totext(6, 'six').
totext(7, 'seven').
totext(8, 'eight').
totext(9, 'nine').
translate([], []).
translate([Head|Rest], [TranslatedHead|TranslatedRest]) :-
totext(Head, TranslatedHead),
translate(Rest, TranslatedRest).
当我加载 gprolog
并查阅文件时,如果我这样做:
translate([], X).
我正确地得到:
X = []
yes
但是当我这样做时
translate([1,2], X).
我得到:
uncaught exception: error(existence_error(procedure,totext/0),translate/0)
我是 Prolog 的新手(这是我的第一个 Prolog 程序),我不知道这里出了什么问题。有任何想法吗?谢谢。
您的代码已更正,但您的 GNU Prolog 构建已损坏。从源代码重新编译 GNU Prolog 应该可以修复它。损坏的 GNU Prolog 构建的常见症状是谓词存在错误,其中谓词总是报告为零,通常不存在于被调用的代码中。
P.S。损坏的 GNU Prolog 安装似乎通常在使用 Ubuntu 时发生。你能确认你也是这种情况吗?