Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List OCaml-将一个列表的所有元素附加到另一个列表的所有元素_List_Functional Programming_Ocaml - Fatal编程技术网

List OCaml-将一个列表的所有元素附加到另一个列表的所有元素

List OCaml-将一个列表的所有元素附加到另一个列表的所有元素,list,functional-programming,ocaml,List,Functional Programming,Ocaml,例如,给定字符串列表[a,b,c]和[d,e] 返回列表[ad、bd、cd、ae、be、ce] 请不要给我答案,只是给一个新学员指出正确的方向。这个问题很棘手,因为您需要遍历两个列表。如果将其作为一个函数编写,则需要跟踪两个递归 一种方法是从一个更简单的问题开始。假设您有一个字符串列表l和一个字符串s。您能否编写一个函数,将s附加到l中的每个字符串,生成一个新列表 使用List.map可以直接解决这个更简单的问题。也可以编写一个显式递归函数 之后,您只剩下一个递归需要解决,这可能更容易 更新 现

例如,给定字符串列表[a,b,c]和[d,e]

返回列表[ad、bd、cd、ae、be、ce]


请不要给我答案,只是给一个新学员指出正确的方向。

这个问题很棘手,因为您需要遍历两个列表。如果将其作为一个函数编写,则需要跟踪两个递归

一种方法是从一个更简单的问题开始。假设您有一个字符串列表
l
和一个字符串
s
。您能否编写一个函数,将
s
附加到
l
中的每个字符串,生成一个新列表

使用
List.map
可以直接解决这个更简单的问题。也可以编写一个显式递归函数

之后,您只剩下一个递归需要解决,这可能更容易

更新

现在有了函数,您可以轻松编写一个函数,将字符串附加到第一个字符串列表的所有元素。布局如下所示:

let cross_concat list1 list2 =
   let concat_string_to_list1 s = concat_string_to_list list1 s in
   ...
使用此定义,您可以再次使用
List.map
获得最终结果(需要将结果字符串列表连接到一个列表中)。或者您可以使用
列表。向右折叠
以在运行时建立结果。也可以编写自己的递归函数


如果您没有编写过太多递归函数,则需要仔细考虑。

这个问题很棘手,因为您需要遍历两个列表。如果将其作为一个函数编写,则需要跟踪两个递归

一种方法是从一个更简单的问题开始。假设您有一个字符串列表
l
和一个字符串
s
。您能否编写一个函数,将
s
附加到
l
中的每个字符串,生成一个新列表

使用
List.map
可以直接解决这个更简单的问题。也可以编写一个显式递归函数

之后,您只剩下一个递归需要解决,这可能更容易

更新

现在有了函数,您可以轻松编写一个函数,将字符串附加到第一个字符串列表的所有元素。布局如下所示:

let cross_concat list1 list2 =
   let concat_string_to_list1 s = concat_string_to_list list1 s in
   ...
使用此定义,您可以再次使用
List.map
获得最终结果(需要将结果字符串列表连接到一个列表中)。或者您可以使用
列表。向右折叠
以在运行时建立结果。也可以编写自己的递归函数


如果您没有编写过太多递归函数,这将是需要仔细考虑的问题。

谢谢。我已经为第一部分创建了一个函数(向列表中的每个元素添加一个字符串):
让concat_string_to_list lst str=list.map(fun x->x^str)lst
,但老实说,我很难理解如何更深入地将列表中的每个元素添加到其他元素中。谢谢。我已经为第一部分创建了一个函数(向列表的每个元素添加一个字符串):
让concat_string_to_list lst str=list.map(fun x->x^str)lst
,但老实说,我很难理解如何更深入地将该列表中的每个元素添加到其他元素,读这个:试着改变你提问的方式。你根本不想让我们知道你甚至想过这个问题。你想计算两个列表的笛卡尔积,然后将每对元素映射到其他元素。请阅读以下内容:并尝试改变你提问的方式。你根本不想让我们知道你考虑过这个问题,你想计算两个列表的笛卡尔积,然后把每一对元素映射到其他元素上。