Haskell类型错误"无法匹配类型`Char'与`t0 [Char]'"

时间:2016-09-10 14:23:53

标签: haskell

我正在尝试创建一个dnaChecker功能并得到此错误。我不知道出了什么问题。如果有人可以解释错误或给我一些很棒的提示! 这是错误和代码:

  * Couldn't match type `Char' with `t0 [Char]'
  Expected type: [t0 [Char]]
    Actual type: String
* In the second argument of `all', namely `sekvens'
  In the expression: all (elem "ACGT") sekvens
  In a stmt of a pattern guard for
                 an equation for `dnaChecker':
    all (elem "ACGT") sekvens
dnaChecker :: String -> SekvensTyp  
dnaChecker sekvens
                | all (elem "ACGT") sekvens = Dna
                | all (elem "ARNDCEQGHILKMFPSTWYV") sekvens = Protein

1 个答案:

答案 0 :(得分:4)

elem "ACGT"是一个函数,用于检查字符串"ACGT"是否是其参数的元素。你想要的是

(`elem` "ACGT")

,这是一个检查其参数是否为"ACGT"的元素的函数。

dnaChecker :: String -> SekvensTyp  
dnaChecker sekvens
            | all (`elem` "ACGT") sekvens = Dna
            | all (`elem` "ARNDCEQGHILKMFPSTWYV") sekvens = Protein

elem作为中缀函数处理可让我们编写一个简洁的部分,而不是写出像\x -> elem x "ACGT"这样的显式lambda表达式。