gpt4 book ai didi

Haskell 对可变数量字符串的列表理解

转载 作者:行者123 更新时间:2023-12-02 21:30:59 24 4
gpt4 key购买 nike

如果我有两个字符串,我使用列表理解来获得所需的结果:

 combineStrings firstStr sndStr = [ [a,b] | a <- firstStr, b <- sndStr]

对于三个字符串,我使用这个

 combineStrings firstStr sndStr trdStr = [ [a,b,c] | a <- firstStr, b <- sndStr, c <- trdStr]

我正在尝试为可变数量的字符串获得相同的结果。例如,如果我有一个采用以下形式的函数:

 combineStrings :: [String] -> [String]

我正在尝试为 2, 3 ... n 个列表获得与上面相同的结果...我尝试了多种方法,例如这个

 combineStrings []      = []
combineStrings (hd:tl) = [ a:b | a <- hd, b <- combineStrings tl]

但是由于第一个子句上的 [] 而导致失败。有人可以帮我写这个吗?

最佳答案

值得注意:Haskell 已经具有该功能,只是更通用一点:

Prelude> :t sequence
sequence :: Monad m => [m a] -> m [a]
Prelude> sequence ["ab","cd","12"]
["ac1","ac2","ad1","ad2","bc1","bc2","bd1","bd2"]

[]Monad 的实例,因此在这种情况下签名变为 sequence::[[a]] -> [[a]] ,其中 a = Charsequence::[String] -> [String]

关于Haskell 对可变数量字符串的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728149/

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