我是初学者,在haskell中编写hangman的实现。必须在 ' * ' 之类的字符串中显示猜测的字符,目前我使用该代码:
proceed char word progress = let zprog = zip progress [0..] in
foldl (\a x -> a ++ [fst x]) "" $ map (f char word) zprog where
f c w el =
if c == w !! (snd el) then
(c, snd el)
else
el
如果单词是“影子”并且进度像“******”,则 char = 's' 函数返回“s****”。
我怎样才能重写那个函数?我看到它不是干净的解决方案。解决方案(@luqui):
proceed char = zipWith combine where
combine x y
| x == char = char
| otherwise = y
(“word”和“progress”参数转移到 zipWith 因为 haskell 的 eta-reduction)