我有這樣的代碼,它將有條件地更新(或添加)一個元組到列表中。而我得到上述錯誤「使用映射時表達式上下文中的模式語法:_」使用映射時
updateTuple :: String -> String -> Int -> [Film] -> String
updateTuple userName requestedTitle newRating ((Film title _ _ ratings):restOfFilms)
| requestedTitle == title = map (\ rating -> if rating == (userName,_) then (userName,newRating) else rating) ratings
| otherwise = updateTuple userName requestedTitle newRating restOfFilms
該消息是相當具有描述性的:'_' in'if rating ==(userNam e,_)'對我和編譯器都沒有意義。 –
所以我不能使用通配符? – user3365968
@ user3365968只有在case語句中的'='或' - >'的左側模式匹配或綁定中的<-'時,才能在比較中使用通配符。你真正應該做的是'if fst rating == userName then ...' – bheklilr