gpt4 book ai didi

Haskell - 有一个函数返回一个空字符

转载 作者:行者123 更新时间:2023-12-04 13:22:26 26 4
gpt4 key购买 nike

我正在尝试创建一个从字符串中删除每个第 n 个元素的函数。

dropEvery :: String -> Int -> String
dropEvery str n = map (\(char, indx) -> if indx `mod` n /= 0 then char else ' ') (zip str [1..])

现在它只是用空格替换每个第 n 个元素,但是如果我希望它返回一个“空字符”,我应该在“else”之后放置什么。我知道 Haskell 中不存在这样的事情,所以问题是 - 我应该如何告诉 Haskell 不返回任何内容而继续下一个字符?

最佳答案

你不能只使用 map ,根据定义,它不能改变它所应用的集合的长度。但是,您可以通过切换到 concatMap 来使其工作而无需进行太多更改。 .此函数要求您要映射的函数返回一个列表,然后将所有结果连接在一起。你需要做的就是

dropEvery str n =
concatMap (\(char, indx) -> if indx `mod` n /= 0 then [char] else []) (zip str [1..])

关于Haskell - 有一个函数返回一个空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com