パターンマッチングの後,引数の具体的な値を条件に分岐したい場合には次のように書く。
| と = の間の分岐条件の部分をガード節という。
条件は上から順にチェックされる,でいいのかな。otherwise は「その他の場合」。
swapCase は文字列の中の大文字と小文字を入れ替える。アルファベットでないならそのまま。
import Data.Char
swapCase [] = []
swapCase (c:cs)
| isUpper c = (toLower c):(swapCase cs)
| isLower c = (toUpper c):(swapCase cs)
| otherwise = c:(swapCase cs)
*Main> swapCase "Haskell" "hASKELL" *Main> swapCase "03^-c,aa" "03^-C,AA"