【发布时间】:2016-05-01 02:47:11
【问题描述】:
Haskell 的新手,到目前为止,这门语言很有趣。我希望得到一个好的提示而不是答案,因为我正在享受 Haskell 的思维改变。
问题:我有一个字符串列表,我想转置它们。
let x = ["hello", "world"]
会变成
["hw", "eo", "lr", "ll", "od"]
到目前为止,我所拥有的是:
transposeString :: [a] -> [a]
transposeString ([]:_) = []
transposeString x = (map head x) : transposeString (map tail x)
我肯定知道类型签名有问题。我的理由是
Let y = ["wow", "top"]
map head y
返回“wt”,所以在列表的其余部分递归它会起作用吗?
提前感谢您的任何提示。
【问题讨论】:
-
关于类型签名,考虑
[a] -> [a]包含[Int] -> [Int]。做transposeString [1,2,3]有意义吗?