fugafuga.write

日々のログ



すごいH本 part2

前の記事でも少しふれたが、Haskell における関数についての続き

blog.tokoyax.com

関数を組み合わせる

doubleUs x y  = x * 2 + y * 2

doubleUs x y = doubleMe x + doubleMe y

このように関数を組み合わせて表現してゆく。
これは関数型でなくてもやってる。

分岐がある関数

doubleSmallNumber x = if x > 100
                        then x
                        else x * 2

実行結果

*Main> doubleSmallNumber 100
200
*Main> doubleSmallNumber 1
2
*Main> doubleSmallNumber 101
101
  • Haskell の if はかならず else が必要
    • 値を返さないということを許さない
    • 制御構文ではなく、式である

関数名に ' を使える

doubleSmallNumber' x = (if x > 100 then x else x * 2) + 1

実行結果

*Main> doubleSmallNumber' 100
201
  • ' のつけどころ
    • 正格(遅延ではない)版の関数につけたりする
    • 少し変更したバージョンの関数につけたりする

関数名のルール

  • 先頭文字は小文字で始める
  • 関数が値をとらないとき、それを定義または名前と呼ぶ
    • 変数ではない、定数みたいなものか

今日はここまで。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

  • 作者: MiranLipovaca
  • 出版社/メーカー: オーム社
  • 発売日: 2017/07/14
  • メディア: Kindle版
  • 購入: 4人 クリック: 9回
  • この商品を含むブログを見る