2016-09-10 17 views
0

dnaChecker関数を作成しようとしましたが、このエラーが発生しました。私は何が間違っているのか分からない。もし誰かがエラーを説明するか、私に素晴らしいヒントを教えてください!ここ はエラーとコードである:ハスケル型エラー "型Charと型が一致しませんでした。"

* 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 

答えて

4

elem "ACGT"文字列"ACGT"がその引数の要素であるかどうかを確認する機能です。何が欲しいのは、引数が"ACGT"の要素であるかどうかを確認する機能です

(`elem` "ACGT") 

、です。

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

中置関数としてelemの治療は、私たちが\x -> elem x "ACGT"のような明示的なラムダ式を書き出すのではなく、簡潔なセクションを書き込むことができます。

+0

あなたの答えをありがとう!私はまだエラーが発生します:*予想される型 'Bool 'を実際の型' t0 a0 - > Bool'とマッチさせることができませんでした。 map(elem "ACGT")$ sekvens のパターンガードのstmtでは、 'dnaChecker 'の式は allです。 map(elem "ACGT")$ sekvens 'dnaChecker 'の式では、次のようになります。 dnaChecker sekvens |すべて 。マップ(elem "ACGT")$ sekvens = Dna |すべて 。 map(elem "ARNDCEQGHILKMFPSTWYV")$ sekvens = Protein – DoubleOseven

+0

ああ、間違った機能がマップされています。アップデートを参照してください。 – chepner

+0

実際、すべてのことはまだ正しくはありません。私(または*誰か*)はすぐに実際の修正を掲載します。 – chepner

関連する問題