我制作了这个函数,它的工作方式与Haskell中的words相同,
words' [] = []
words' str = before : words' (dropWhile isSpace after) where
(before, after) = break isSpace str我现在正在尝试推广它,这样如果我输入:
gWords' "abcbdecefab" "ac" == ["b","bde","ef","b"]或
gWords' "abc(hjd(hj))jk)k" "()" == ["abc","hjd","hj","jk","k"]发布于 2020-09-15 08:14:31
惯用的Haskell是提供一个谓词(即布尔函数)作为参数:
wordsBy _ [] = []
wordsBy isbrk str = before : wordsBy isbrk (dropWhile isbrk after) where
(before, after) = break isbrk str然后,您可以提供一个特定的谓词:
gwords' str brks = wordsBy (`elem` brks) str要解释上面的谓词:
elem的第一个参数,则该函数将返回true:elem e brks
E elem brks === elem e brks
(elem brks) === (\ e -> e elem brks)
这将为您提供所需的谓词:对字符串brks中的字符返回true的谓词。
https://stackoverflow.com/questions/63892789
复制相似问题