2016-10-12 15 views
-2

ですべての特定の文字を置き換えるここに私のコードはは、Haskellは入力文字

partialDecode :: Char->Char->[Char] -> [Char] 
partialDecode _ _ [] = [] 
partialDecode a b (x:xs) = map (\(b) -> (u2Lo a)) (x:xs) 

My機能です基本的には、その後aによって、その文字列内のすべてのbを置き換え、2つの文字abと文字列になります。すべての入力が小文字であることに注意してください。u2Lo関数は、出力文字列のすべてを置換するすべての小文字を出力文字列のaにします。どうやらこの関数はすべて大文字のaという文字列を返します。

+1

お困りですか?あなたはいくつかのコードを記述しました。あなたは決して質問しませんでした。 –

+1

式 '\(b) - >(u2Lo a)'は定数関数です。すなわち、すべての入力に対して同じ出力を生成する関数です。 'map ..'したがって、' u2Lo'の実装方法にかかわらず、すべての出力要素が同一であるリストを生成する必要があります。ラムダの内部に 'if'文やその他の制御フローロジックが必要です。 '\(b) - > ..'の' b 'と 'partialDecode a b ...'の 'b'は*完全に無関係であることに注意してください。 – user2407038

答えて

-1

この機能の実装は、あなたの説明によく似ています。 goは、引数がsearchの場合はreplaceを返します。それ以外の場合は、引数を直接返します。 mapを使用して、リスト内の各要素にgoを適用するだけです。

replace :: Eq a => a -> a -> [a] -> [a] 
replace search replace = map go 
    where go x 
      | x == search = replace 
      | otherwise = x