Hatena::Grouphaskell

lnzntのHaskell日記 このページをアンテナに追加 RSSフィード

2014年11月23日(日)

関数の書き方

| 09:25 |  関数の書き方 - lnzntのHaskell日記 を含むブックマーク はてなブックマーク -  関数の書き方 - lnzntのHaskell日記  関数の書き方 - lnzntのHaskell日記 のブックマークコメント

参考書籍の練習問題の一部である swapa。'A' を 'a' に 'a' を 'A' に書き換える関数。

パターンマッチで。

swapa :: Char -> Char

swapa 'a' = 'A'
swapa 'A' = 'a'
swapa c   = c

ガードで。

swapa :: Char -> Char

swapa c
    | c == 'a'  = 'A'
    | c == 'A'  = 'a'
    | otherwise = c

case を使って。

swapa :: Char -> Char

swapa c = case c of
          'a' -> 'A'
          'A' -> 'a'
          _   -> c

レイアウト規則(オフサイド規則)で少しハマった。

インデントはスペースを使ったほうがいいみたい。vi では「:se et」すべし。


1行で書いでみる。

swapa :: Char -> Char
swapa c = case c of { 'a' -> 'A' ; 'A' -> 'a' ; _ -> c }

ラムダで書いてみる。

swapa = \c -> case c of { 'a' -> 'A' ; 'A' -> 'a' ; _ -> c }