gpt4 book ai didi

list - Prolog:降低列表中的所有原子

转载 作者:行者123 更新时间:2023-12-02 05:05:53 25 4
gpt4 key购买 nike

我正在尝试编写一个 Prolog 程序,该程序需要接受用户的自然语言输入并将其与一组原子进行匹配。我正在使用 SWI Prolog 的 readln/1 获取输入并将其放入原子列表中,但我无法保证用户输入的大小写,所以我只想小写我在尝试匹配之前得到的所有输入。我现在拥有的是:

downcase_list(AnyCase, LowerCase) :- dcl(AnyCase, X), flatten(X,LowerCase).

dcl([], List) :- List.
dcl([Head|Rest], []) :- downcase_atom(Head,X), dcl(Rest,X).
dcl([Head|Rest], List) :- downcase_atom(Head,X), dcl(Rest, [List|X]).

使用 [List|X] 添加似乎是我的问题,但我不知道如何解决它,因为我已经尝试使用 append/3 并得到一个无限循环:

downcase_list([], List) :- List.
downcase_list([Head|Rest], []) :- downcase_atom(Head,X), downcase_list(Rest, X).
downcase_list([Head|Rest], NewList) :- downcase_atom(Head,X), append(NewList,X,Z), writeln(Z), downcase_list(Rest,Z).

我是 Prolog 的新手(此时我会将自己归类为 Lisp 程序员),所以我很可能遗漏了一些基本知识。帮忙?

最佳答案

如果您已经有了一个原子列表,要将它们降级,您必须使用 maplist/3downcase_atom/2 应用映射:

downcase_list(AnyCaseList, DownCaseList):-
maplist(downcase_atom, AnyCaseList, DownCaseList).

关于list - Prolog:降低列表中的所有原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com