私はDNA転写プログラムを作ろうとしているが、私はそれをやっている方法に問題がある、私は確かにこれを行う簡単な方法がありますが、これは来た最初のことだった私の頭には向いているが、それは私が望むように働いていない。ここで複数の機能を組み合わせる
dnaToRna :: [Char] -> [Char]
dnaToRna [] = []
dnaToRna xs = reverse(transc xs)
where transc = (replaceA . replaceT . replaceC . replaceG)
replaceA = map(\c -> if c == 'A' then 'U' else c)
replaceT = map(\c -> if c == 'T' then 'A' else c)
replaceC = map(\c -> if c == 'C' then 'G' else c)
replaceG = map(\c -> if c == 'G' then 'C' else c)
は出力です:
*Main> let seq = "AAATGTTAGTACACTAAGG"
*Main> dnaToRna seq
"GGUUUGUGUUGUUUGUUUU"
私は相互コンダクタンスがAを置き換えるためである把握し、 任意のヒントなどなど、文字列全体をチェックし、Tを置き換え? ありがとうございます!
すべてのCをGで置き換えた後、すべてのGをCで置き換えると、DNAにはCのみが追加されます。あなたは行くごとに各キャラクターを転記する必要があります。 –
私は、指定された文字をその "反対の"文字にマップするタイプのChar - > Char'関数を作ることを提案します。次に、この機能をDNA鎖全体にマッピングすることができます。基本的には、すべてのラムダを1つの関数にまとめる必要があります。 –
@ Code-Apprentice私はそれを[Char]にする必要がありました。新しい機能を備えたマップではエラーが発生していましたが、前に試したことがあります。 – Wireless