prolog - 如果输入没有被删除,如何创建一个无限列表?
问题描述
我编写了一个函数式函数,根据输入的列表告诉用户列表是否已排序。但是,如果用户输入变量而不是列表作为输入,我想输出一个无限列表。我该怎么办?这是当前代码
ordered([]).
ordered([_]).
ordered([X,Y|Ys]) :- X =< Y , ordered( [Y|Ys] ).
这是一些输入
? ordered([1,2,3]).
true
? ordered([1,5,2]).
false
我也希望变量像这样创建无限列表
? ordered(L).
L = [];
L = [_1322] ;
L = [_1322, _1323] ;
L = [_1322, _1323, _1324] ;
L = [_1322, _1323, _1324, _1325].
该列表应增加,直到用户退出,如图所示。
解决方案
该列表应增加,直到用户退出,如图所示。
解决方案:
ordered([]).
ordered([_]).
ordered([X,Y|Ys]) :- X #=< Y , ordered( [Y|Ys] ).
编辑:
算术表达式 X 小于或等于 Y。在对整数进行推理时,将 (=<)/2 替换为 #=</2 以获得更一般的关系。参见声明性整数算术(第 A.9.3 节)。
推荐阅读
- swift - 将 Text() 添加到 VStack 时,SwiftUI“调用中位置 #11、#12 的额外参数”
- javascript - 数据不会传输到 Angular 组件
- vba - Excel VBA将索引公式分配给变量
- php - 在对象中搜索元键并获取值
- amazon-web-services - EKS Kubernetes 出站流量
- html - 如何在输入字段顶部放置加号
- javascript - 创建集合 javascript
- python - 当输入包含 nans 时如何解决 TAlib 给出不正确的结果
- powerbi - PowerBIIntegration.Refresh() 有时不起作用
- python - 以更快的方式展平和扩展 json