現在我正在嘗試制作一個可以查看輸入item是否已經在的函式list,這是我的代碼。
list :: [String]
list = ["a","b"]
listCheck :: String -> [String]
listCheck item = [(x:xs)| (x:xs) <- list, x == item]
當前的問題是它只能過濾輸入是字符而不是字串,當我留下未宣告的型別時,Haskell 生成了函式Char -> [String],并且它作業得非常好,當它不被包含時它回傳一個空串列并且它如果包含該專案,則回傳一個包含該專案的串列。當我添加它時,String -> [String]它回傳了這個錯誤。
Couldn't match type `[Char]' with `Char'
Expected: Char
Actual: String
我試圖將其更改為x <- item并編譯,但它[item, item]每次都給出。我想知道我能做些什么來使它與字串而不是字符一起作業,謝謝。
uj5u.com熱心網友回復:
這部分使 x 為 char。
(x:xs) <- list
每個元素映射像
["a","b"]
'a':[] => x = 'a', xs = []
'b':[] => x = 'b', xs = []
所以,如果你想檢查串列中的元素并找到一個,下面怎么樣。
listCheck :: String -> [String]
listCheck item = [x| x <- list, x == item]
Prelude> listCheck "a"
["a"]
Prelude> listCheck "b"
["b"]
Prelude> listCheck "c"
[]
Prelude>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411549.html
標籤:
