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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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 使用fold检查OCAML列表中是否有单词_List_Ocaml - Fatal编程技术网

List 使用fold检查OCAML列表中是否有单词

List 使用fold检查OCAML列表中是否有单词,list,ocaml,List,Ocaml,假设我想从6个字母的单词中提取一个4个字母的单词,从“谢谢”中说出“hank”。假设还有一个有意义的4个字母的单词列表,我想检查我刚才提取的4个字母的单词是否有意义(即,如果它出现在4个字母的单词列表中),然后我想返回一个所有6个字母的单词的列表,从中提取出有意义的4个字母的单词。 我的想法是: let is_4_init lst = let acc = ([]) in let f (group) x = let y =

假设我想从6个字母的单词中提取一个4个字母的单词,从“谢谢”中说出“hank”。假设还有一个有意义的4个字母的单词列表,我想检查我刚才提取的4个字母的单词是否有意义(即,如果它出现在4个字母的单词列表中),然后我想返回一个所有6个字母的单词的列表,从中提取出有意义的4个字母的单词。 我的想法是:

let is_4_init lst = 
    let acc = ([]) in
            let f (group) x =
                    let y = String.sub x 1 4 in
                    if List.mem y my_4words_list then ([x]) in
            let (final_group) = List.fold_left f acc lst in final_group
错误:此变量表达式的类型应为unit 构造函数::不属于unit类型

为什么会这样


谢谢大家!

如果您使用
如果。。。然后
不带
否则
,则结果的类型必须是
单位
。这是因为两种情况下的类型必须相同
unit
是值的类型
()
,当表达式的结果不是特别有趣时使用

函数f应该返回一个累加的结果,所以它确实返回了一个有趣的结果。返回
unit
不是您想要的。您需要弄清楚当测试为false时,
f
应该返回什么


作为旁注,值得注意的是,您没有在任何地方使用名为
group
的参数。

我不确定如何处理“else”的情况,因为如果这个4个字母的单词没有意义,我希望转到下一个单词,忽略最后一个单词。我知道我的变量组没有在任何地方使用。我可以用“u”吗?非常感谢。不,您需要使用
。如果你知道如何使用
group
,它将回答这两个问题。我想我现在明白了。如果我还有其他问题,我应该创建一个新主题吗?我的下一步是创建一个字符串对列表,其中包含上述所有的(4个字母,6个字母)对。我的策略是什么?