2017-11-07 10 views
2

私のコードでマップをそのまま使用することは可能かどうかを知りたいです。私のコードはStringを受け取り、Charを他のものに置き換えて逆にしますが、私はこのコードでマップを使いたいと思っていました。ハスケル使用マップ

transforme' ::[Char] -> [Char] 
transforme' = reverse'.condiçoes 

condiçoes :: [Char] -> [Char] 
condiçoes = foldr (\x -> if 
       x == 'A' then ('U':) 
       else if x == 'T' then ('A':) 
       else if x == 'C' then ('G':) 
       else if x == 'G' then ('C':) 
       else (x:)) [] 

reverse' :: [Char] -> [Char] 
reverse' xs = foldr (\b f x -> f (b : x)) id xs [] 
+2

[複数の機能を組み合わせる]の可能複製(https://stackoverflow.com/questions/47146630/combining-multiple -機能) – Redu

答えて

1

あなたは最初の "翻訳" 機能を構築することができます。

trns 'A' = 'U' 
trns 'T' = 'A' 
trns 'C' = 'G' 
trns 'G' = 'C' 
trns x = x 

をそしてOW我々は使用することができます。

condiçoes = map trns 

だから我々はtrns機能の上にマッピングを行います。

reverse :: [a] -> [a]組み込みがあること、またはあなたはこのためにfoldlをUEすることができます

reverse' :: [a] -> [a] 
reverse' = foldl (flip (:)) []