【发布时间】:2021-12-04 21:32:14
【问题描述】:
我编写了这段代码,它替换了满足谓词的列表中的所有元素:
gRep :: (t -> Bool) -> t -> [t] -> [t]
gRep pred x ys = [if pred y then x else y | y <- ys]
所以 f.eks 我得到了这些输出:
ghci> gRep (<'g') 'z' "abcdefghijklmnopqrstuvwxyz"
"zzzzzzghijklmnopqrstuvwxyz"
ghci> gRep (<3) 0 [1,2,3,4,5,6,7,8,9]
[0,0,3,4,5,6,7,8,9]
如何改用 map 来编写这个函数?
我试着这样写:
gRepMap :: (t -> Bool) -> t -> [t] -> [t]
gRepMap pred x ys = map (\zs -> if (pred y) then x else y | y <- ys) ys
但由于 | y <- ys ,我收到了解析器错误。我知道这可能是重复的,但我找不到处理此特定转换的问题。
【问题讨论】:
标签: list haskell list-comprehension