【问题标题】:Haskell Character in String function字符串函数中的 Haskell 字符
【发布时间】:2021-10-15 08:50:42
【问题描述】:

嘿,我是 Haskell 的新手,遇到了一个小问题。

我想编写一个函数来检查给定字符是否在给定字符串中。这是我的代码:

inString :: String -> Char -> Bool 
inString [] _ = False 
inString x c = x == c
inString x:xs c = inString xs c

对我来说这很有意义,因为我知道字符串只是字符列表。但我收到了Parse error in pattern : inString

任何帮助将不胜感激。

【问题讨论】:

    标签: string list haskell character


    【解决方案1】:

    您必须考虑每个表达式的类型:

    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)
    

    所以一种可能的方法是:

    inString :: String -> Char -> Bool 
    inString [] _ = False 
    inString (x:xs) c = if x == c then True else inString xs c
    

    【讨论】:

      【解决方案2】:

      模式必须用括号括起来:

      inString (x:xs) c = inString xs c
      

      【讨论】:

      • (......还有其他问题。但这会让你进入下一个错误。)
      【解决方案3】:

      您可以使用列表隶属函数elem

      例子:

      ghci>'c' `elem` "cat" --returns True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 2012-01-12
        • 2012-01-06
        • 1970-01-01
        • 2011-10-01
        • 2014-02-13
        • 2014-01-09
        相关资源
        最近更新 更多