Das erste was mir dazu einfällt wäre der rekursive Ansatz:
Code:
versch :: String -> String
versch "" = ""
versch s = versch' 0 s
where versch' :: Int -> String -> String
versch' _ [] = ""
versch' a (s:ss) = if a `mod` 2 == 0 then
(chr(ord(s) - 1)):versch' (a+1) ss else
(chr(ord(s) + 1)):versch' (a+1) ss
Aber mit ein bisschen mehr Denkarbeit ließe sich da sicher auch mit Listenkomprehension was machen.
//edit:
Oh, hab genau umgekehrt verschlüsselt. Behoben.