List OCaml-将一个列表的所有元素附加到另一个列表的所有元素
例如,给定字符串列表[a,b,c]和[d,e] 返回列表[ad、bd、cd、ae、be、ce]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可以直接解决这个更简单的问题。也可以编写一个显式递归函数 之后,您只剩下一个递归需要解决,这可能更容易 更新 现
请不要给我答案,只是给一个新学员指出正确的方向。这个问题很棘手,因为您需要遍历两个列表。如果将其作为一个函数编写,则需要跟踪两个递归 一种方法是从一个更简单的问题开始。假设您有一个字符串列表
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
,但老实说,我很难理解如何更深入地将该列表中的每个元素添加到其他元素,读这个:试着改变你提问的方式。你根本不想让我们知道你甚至想过这个问题。你想计算两个列表的笛卡尔积,然后将每对元素映射到其他元素。请阅读以下内容:并尝试改变你提问的方式。你根本不想让我们知道你考虑过这个问题,你想计算两个列表的笛卡尔积,然后把每一对元素映射到其他元素上。