2016-10-12 3 views
-2

Hier ist mein CodeHaskell alle besonderen Zeichen mit einem Eingabezeichen ersetzen

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

Meine Funktion in 2-Zeichen im Grunde nimmt a und b und eine Zeichenfolge, ersetzt dann alle b in dieser Zeichenfolge durch a. Beachtet, dass alle Eingaben in Kleinbuchstaben sind, macht die u2Lo Funktion nur das Ersetzen a der Ausgabezeichenfolge in Kleinbuchstaben. Irgendwie gibt diese Funktion eine Zeichenfolge aus allen Großbuchstaben a zurück.

+1

Was ist Ihre Frage? Du hast etwas Code beschrieben; du hast nie eine Frage gestellt. –

+1

Der Ausdruck "\ (b) -> (u2Loa)" ist eine konstante Funktion, d. H. Eine, die für jede Eingabe die gleiche Ausgabe erzeugt. 'map ..' deshalb * muss * eine Liste erzeugen, in der jedes Ausgabeelement identisch ist, unabhängig davon, wie 'u2Lo' implementiert ist. Sie benötigen eine 'if'-Anweisung oder eine andere Kontrollflusslogik innerhalb des Lambda. Beachten Sie, dass das 'b' in' \ (b) -> ..' und das in 'partialDecode a b ...' * völlig unverwandt * sind. – user2407038

Antwort

-1

Die Implementierung der Funktion liest sich ähnlich wie Ihre Beschreibung. go gibt replace zurück, wenn sein Argument gleich search ist; Andernfalls wird das Argument direkt zurückgegeben. Wir wenden einfach go auf jedes Element in der Liste unter Verwendung map an.

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