Ocaml List.iter&;List.fold_right一起使用

Ocaml List.iter&;List.fold_right一起使用,ocaml,Ocaml,我正在尝试使用列表模块中的fold_right和List.iter函数。有没有办法把它们结合起来使用呢 let step nfa start transition = let transition_list = get_transition nfa in List.iter ( fun state -> List.fold_right (fun ct nl -> if ((get_pre_trans transition)= state &&a

我正在尝试使用列表模块中的fold_right和List.iter函数。有没有办法把它们结合起来使用呢

let step nfa start transition = 
  let transition_list = get_transition nfa in
  List.iter ( fun state ->
    List.fold_right (fun ct nl ->
       if ((get_pre_trans transition)= state && (get_trans ct) = transition) then
         (get_post_transition transition)::nl
       else
         nl
    ) transition_list []
  ) start
;;
**get_xxx函数从元组中获取值,其中有转换前、转换值和转换后

返回错误: 错误:此表达式具有“a”列表类型,但应为unit类型的表达式


不知道该做什么。

传递给
iter
的函数体只包含一个表达式,即对
折叠_right
的调用,其计算结果为
列表
类型的值,但
iter
签名要求传递一个返回
单位
类型值的函数。这基本上就是编译器试图告诉你们的。如果您对计算的
右折
值不感兴趣,则可以使用
忽略
函数忽略它,该函数接受任何类型的值,并返回类型为
单位
的值。另一方面,如果你不想放弃它,那么你就不应该使用
iter
,而应该使用
fold\u right
或者更好的方法是
fold\u left


最后,回答你的问题,是的,有多种方法可以将它们结合在一起,但通常,如果你在iter内部应用折叠,你就做错了。

你传递给
iter
的函数体只包含一个表达式,即调用
折叠右
,其计算结果为
list
类型的值,但
iter
签名要求您传递一个函数,该函数返回
unit
类型的值。这基本上就是编译器试图告诉你们的。如果您对计算的
右折
值不感兴趣,则可以使用
忽略
函数忽略它,该函数接受任何类型的值,并返回类型为
单位
的值。另一方面,如果你不想放弃它,那么你就不应该使用
iter
,而应该使用
fold\u right
或者更好的方法是
fold\u left


最后,回答你的问题,是的,有多种方法可以将它们结合在一起,但通常,如果你在iter内部应用折叠,你就做错了。

你传递给
iter
的函数体只包含一个表达式,即调用
折叠右
,其计算结果为
list
类型的值,但
iter
签名要求您传递一个函数,该函数返回
unit
类型的值。这基本上就是编译器试图告诉你们的。如果您对计算的
右折
值不感兴趣,则可以使用
忽略
函数忽略它,该函数接受任何类型的值,并返回类型为
单位
的值。另一方面,如果你不想放弃它,那么你就不应该使用
iter
,而应该使用
fold\u right
或者更好的方法是
fold\u left


最后,回答你的问题,是的,有多种方法可以将它们结合在一起,但通常,如果你在iter内部应用折叠,你就做错了。

你传递给
iter
的函数体只包含一个表达式,即调用
折叠右
,其计算结果为
list
类型的值,但
iter
签名要求您传递一个函数,该函数返回
unit
类型的值。这基本上就是编译器试图告诉你们的。如果您对计算的
右折
值不感兴趣,则可以使用
忽略
函数忽略它,该函数接受任何类型的值,并返回类型为
单位
的值。另一方面,如果你不想放弃它,那么你就不应该使用
iter
,而应该使用
fold\u right
或者更好的方法是
fold\u left


最后,回答你的问题,是的,有很多方法可以将它们结合在一起,但通常,如果你在国际热核实验堆内部应用折叠,你就做错了。

你的很多代码都缺失了,没有它我们无法帮到你。您在哪里申报了新列表或获取交易?也许你应该检查这些值的类型。你的很多代码都丢失了,没有它我们就帮不了你。您在哪里申报了新列表或获取交易?也许你应该检查这些值的类型。你的很多代码都丢失了,没有它我们就帮不了你。您在哪里申报了新列表或获取交易?也许你应该检查这些值的类型。你的很多代码都丢失了,没有它我们就帮不了你。您在哪里申报了新列表或获取交易?也许你应该检查这些值的类型。那么,如果我想取回列表,我应该将iter放在折叠中吗?在这种情况下,你需要在折叠中折叠。你可以给出一个使用list.iter与list.fold的示例吗?我想我可以在启动状态列表中使用List.iter,因为我没有修改任何这些值。我只是想在内部函数中使用这些值。因此,如果我想拿回列表,我应该将iter放在折叠中吗?在这种情况下,您需要将折叠放在折叠中,您可以给出一个何时使用list.iter与list.fold的示例吗?我想我可以在启动状态列表中使用List.iter,因为我没有修改任何这些值。我只是想在内部函数中使用这些值。因此,如果我想拿回列表,我应该将iter放在折叠中吗?在这种情况下,您需要将折叠放在折叠中,您可以给出一个何时使用list.iter与list.fold的示例吗?我想我可以在启动状态列表中使用List.iter,因为我没有修改任何这些值。我只是想在内部函数中使用这些值。因此,如果我想得到列表,我应该将iter放在折叠中吗?在这种情况下,您需要在折叠中折叠。您可以给出一个何时使用list.ite的示例