我正在尝试创建一个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
答案 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表达式。