我有类型
Variable l: list (a * b * option c * option d).
Variable ls : list (list l).
我想从列表的头部取出option d
类型,然后检查整个列表。我的代码看起来像这样:
Definition test (l: list (a * b * option c * option d)):=
match l with
| nil => ... (* not important *)
| (_,_,_,od) :: l' =>
match od with
| None => ... (* not important *)
| Some d => if forallb (fun li => forallb (fun ci => do_something ci d)) ls) l'
end
end.
我的问题是测试if forallb (fun li => forallb (fun ci =>do_something ci d))ls)l'
我添加了forallb (fun li =>...)
,因为我希望它在整个列表l'
中进行测试。但我根本没有使用论证li
。
编辑:我的问题集中在if forallb (fun li => forallb (fun ci => do_something ci d))ls)l'
。我添加了forallb (fun li =>
,因为我想测试列表的其余部分l'
。如果没有forallb (fun li
,我可以归档此测试if (forallb (fun ci => do_something ci d))ls
,但我不知道如何在列表l'
中再次测试此条件。
答案 0 :(得分:0)
您的背景不一致。
变量l:...
使l是列表
变量ls:list(list l)。
假设l是一个类型。
也许你的意思是:
定义l:= list(a * b *选项c *选项d)。
变量ls:= list(list l)。
这使得ls成为列表列表的列表(如三维数组)。
现在,假设你的意思是do_something有类型l - > d - >布尔
我想你想用ls中l类型的所有元素测试do_something,测试参数中的所有d类型元素(也称为l,yuck)。
你应该...
|有些d => if forallb(fun li => forallb(fun ci => do_something ci d))ls然后测试l'else false ...
但坦率地说,你的问题让回答者猜到了很多!