Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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/2/ssis/2.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
Haskell 筛选字符串列表以获得具有特定长度的字符串列表_Haskell_Pattern Matching_List Comprehension - Fatal编程技术网

Haskell 筛选字符串列表以获得具有特定长度的字符串列表

Haskell 筛选字符串列表以获得具有特定长度的字符串列表,haskell,pattern-matching,list-comprehension,Haskell,Pattern Matching,List Comprehension,我有下面的函数,它获取两个列表,将每个元素与每个元素匹配,并返回一个字符串列表 matchChars:: [t] -> [t] -> [[t]] matchChars x y = [[a,b] | a<-x, b <-y] 但这不起作用,因为它迭代子列表的长度,而不是字符串长度。有人知道如何解决我的问题吗?在你的情况下,我认为过滤器比takeWhile更合适,就像Robin一样。 像这样: λ> λ> myFilter = filter (\[ls1,

我有下面的函数,它获取两个列表,将每个元素与每个元素匹配,并返回一个字符串列表

matchChars:: [t] -> [t] -> [[t]]
matchChars x y = [[a,b] | a<-x, b <-y]

但这不起作用,因为它迭代子列表的长度,而不是字符串长度。有人知道如何解决我的问题吗?

在你的情况下,我认为过滤器比takeWhile更合适,就像Robin一样。 像这样:

 λ> 
 λ> myFilter = filter (\[ls1, ls2] -> (7 > (length ls1 + length ls2)))
 λ> 
 λ> myFilter  [["aaa", "bbbb"],["c", "dd"]]
 [["c","dd"]]
 λ> 

函数仅用于获取满足谓词的项的初始和连续段。

在您的情况下,我认为过滤器比takeWhile更合适,就像Robin一样。 像这样:

 λ> 
 λ> myFilter = filter (\[ls1, ls2] -> (7 > (length ls1 + length ls2)))
 λ> 
 λ> myFilter  [["aaa", "bbbb"],["c", "dd"]]
 [["c","dd"]]
 λ> 

函数仅用于获取满足谓词的项的初始和连续段。

在我看来,目前编写的matchChars只能生成长度为2的列表。它似乎与非常类似,只是它返回一个短列表列表,而不是成对列表。这就是你想要的吗?@jpmarinier我没有使用zip,因为它不匹配每个元素和每个元素,只对同一索引上的元素进行zip。@RobinZigmond我考虑过,但我不想在匹配x和y之前删除stringy,因为这样可能会丢失有效的对,如果我删除长度为minor 7.@T.Naz的字符串,很抱歉,我删除了我的评论,因为我意识到我误解了您试图实现的目标。您希望筛选结果列表,而在条件失败时停止执行,即使稍后的元素再次满足它。您使用的谓词应该获取一个列表[a,b],并检查两个字符串的组合长度。这就足够了吗?在我看来,正如目前所写的,matchChars只能生成长度为2的列表。它似乎与非常类似,只是它返回一个短列表列表,而不是成对列表。这就是你想要的吗?@jpmarinier我没有使用zip,因为它不匹配每个元素和每个元素,只对同一索引上的元素进行zip。@RobinZigmond我考虑过,但我不想在匹配x和y之前删除stringy,因为这样可能会丢失有效的对,如果我删除长度为minor 7.@T.Naz的字符串,很抱歉,我删除了我的评论,因为我意识到我误解了您试图实现的目标。您希望筛选结果列表,而在条件失败时停止执行,即使稍后的元素再次满足它。您使用的谓词应该获取一个列表[a,b],并检查两个字符串的组合长度。这暗示够了吗?