Kil*_* Hd 5 string haskell list character
嘿,我是 Haskell 的新手,我遇到了一个小问题。
我想编写一个函数来检查给定的字符是否在给定的字符串中。这是我的代码:
inString :: String -> Char -> Bool
inString [] _ = False
inString x c = x == c
inString x:xs c = inString xs c
Run Code Online (Sandbox Code Playgroud)
对我来说这很有意义,因为我知道字符串只是字符列表。但我得到了一个Parse error in pattern : inString.
任何帮助,将不胜感激。
您必须考虑每个表达式的类型:
inString :: String -> Char -> Bool
inString [] _ = False
inString (x::String) (c::Char) = x == c -- won't compile char and strings cannot be compared because they have different type
inString (x:xs) c = inString xs c -- add parenthesis to x:xs -> (x:xs)
Run Code Online (Sandbox Code Playgroud)
所以一种可能的方法是:
inString :: String -> Char -> Bool
inString [] _ = False
inString (x:xs) c = if x == c then True else inString xs c
Run Code Online (Sandbox Code Playgroud)