
"New Zealand Autumn" by Abaconda
モナドを実装したり、メモ化したり、コンビネータを書いたりとかしたけど、Haskellらしいコードが全然書けない。一応は動くものは書けるけど、どうも命令型で関数型っぽくない。ということで、Haskellらしいコードが書けるように修行する。
"らしい"コードを書けるようになるためには、素晴らしいプログラマが書いた"らしい"コードをたくさん読んで吸収していくのが一番じゃないかなと思う。ということで、しばらく以下をやっていこうと思います。
- codeforceの問題をHaskellで解く
- ratingの高いHaskellerが書いたコードと自分のコードを比べる
- いいところを吸収する
自分が書いたコード:
- import Char
- isVowel 'a' = True
- isVowel 'i' = True
- isVowel 'u' = True
- isVowel 'e' = True
- isVowel 'o' = True
- isVowel 'y' = True
- isVowel 'A' = True
- isVowel 'I' = True
- isVowel 'U' = True
- isVowel 'E' = True
- isVowel 'O' = True
- isVowel 'Y' = True
- isVowel x = False
- addDot [] = []
- addDot (x:xs) = '.' : x : addDot xs
- main = do
- input <- getLine
- putStrLn . map toLower . addDot . filter (not . isVowel ) $ input
お手本コード(bjin氏参考):
- import Char
- g x | x < '0' || elem x "aoyeui" = ""
- | 1 > 0 = '.':[x]
- main = interact $ concatMap (g.toLower)
ポイント:
0 件のコメント:
コメントを投稿