IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Haskell 自習

遅延評価は分かったけど

具体的に使ってみないことには「便利!!」と感動できないので。
毎日ちょっとだけ暇見つけて Haskell を勉強してみよう

はじめてのプログラミング

僕は、初めてプログラムを書くとき、閏年を考慮した月の日数計算をするプログラムを書いてみることにしている。
そして、何も読まずに Google で検索しながら使えそうなコードを拾って寄せ集めて書いてみる。
最初は汚いコードでいいんだ!
とりあえず、感覚を掴むまで文法の勉強をしない。

で、とりあえず完成はした

import System

main = do
    args <- getArgs
    putStrLn $ show $ dayof $ map read args

dayof [y, m]
    | m == 1 = 31
    | m == 3 = 31
    | m == 2 =
        if      mod y 400 == 0 then 29
        else if mod y 100 == 0 then 28
        else if mod y 4   == 0 then 29
        else                        28
    | m == 4 = 30
    | m == 5 = 31
    | m == 6 = 30
    | m == 7 = 31
    | m == 8 = 31
    | m == 9 = 30
    | m == 10 = 31
    | m == 12 = 31

感想

  • show 関数と read 関数を見つけるのにすごく時間がかかった。
  • getArgs の IO [String] という型が気になる。
  • なんか、関数をつなぐ $ はパイプみたいだな。
  • 関数を = で定義するのは理にかなってる気がする