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

如何在Prolog中创建指定维度的固定大小空列表

构造Prolog中的固定嵌套空列表

嘿,我来帮你实现这个特定维度的嵌套列表构造!你需要的是一个9元素的顶层列表,每个元素又是包含两个长度为9的匿名变量列表的子列表。下面给你几种简洁且可复用的实现方式:

方法1:递归+模块化子句

这种方法把问题拆分成小模块,可读性强,适配所有Prolog方言:

% 生成一个长度为9的匿名变量列表
length_9(List) :-
    length(List, 9).

% 生成包含两个长度9列表的子结构
double_9_pair(Pair) :-
    Pair = [FirstRow, SecondRow],
    length_9(FirstRow),
    length_9(SecondRow).

% 生成最终的顶层9元素列表
top_level_list(TopList) :-
    length(TopList, 9),
    maplist(double_9_pair, TopList).

使用方式

直接查询:

?- top_level_list(Result), write(Result).

执行后就会输出你想要的嵌套结构。

方法2:紧凑内联写法(SWI-Prolog友好)

如果你用的是SWI-Prolog,可以借助lambda表达式简化代码,无需额外辅助子句:

:- use_module(library(lambda)).

top_level_list(TopList) :-
    length(TopList, 9),
    maplist(\Pair^(Pair = [A,B], length(A,9), length(B,9)), TopList).

方法3:快速直接生成

如果不想定义任何辅助子句,也可以用findall配合重复生成逻辑快速构造:

top_level_list(TopList) :-
    findall([A,B], (length(A,9), length(B,9)), Temp),
    length(Temp, 9),
    TopList = Temp.

小提示

  • 所有方法生成的列表中,每个_都是独立的匿名变量,后续可以单独绑定具体值
  • Prolog的length/2是双向谓词:当第二个参数为整数、第一个为变量时,会自动生成对应长度的变量列表

内容的提问来源于stack exchange,提问作者Enforcerke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:07:44