よちよち.hs 第3回 #yochiyochihs

いつからか気になっていたHaskell、なかなか手を出せずにいたのですが、
よちよち.rb 主催者の @yucao24hours さんがHaskellに挑戦しているということで、便乗させてもらいました。

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

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

こちらの本を読み進めていきます。

実は、ミートアップに参加できるかどうか直前まで悩んでいて、結局当日の朝になって慌てて準備をした…という体たらく。
どうにか実行環境を作って本をざーっと読んで行きましたが、当然ついていくのが大変でした。反省。

プログラミング言語でいえば、Rubyしかやったことない(あとちょっとだけJavaScriptとかVBA)人がHaskellをやるとどうなるのでしょうか。

「遅延評価」とは

Haskell は怠け者です。特にそうしろと言われた場合を除いては、結果が必要になるまで関数を実行しないのです。この振る舞いは、専門用語では遅延評価といいます。

と本にありますが、なんだか抽象的でよくわかりません。
これは、こういうことのようです。

def func(x, y)
  if x > 0
    x + 1
  else
    y + 1
  end
end

a = 10
func(1, a + 3)  #=> 2

上記のようなとき、funcの第二引数にあるような ( a + 3 ) の部分は、本当に必要になるまで評価されないということのようです。
ふむ。

「型クラス」とは

関数を定義するときに型も書くんですね。
型を意識して書くというのが新鮮。
そういえばVBAでも変数を宣言するときに型も一緒に書いていたっけ。。
しかしまだまだイメージできません。理解できていない。
型、あるらしい。くらい。

本では「型クラス初級講座」(27ページ)ということで、いろんな型の紹介がはじまったところです。

Hello World したかった

この日ほんとにはじめてHaskellを触ったので、ひとまずHello Worldをしたいなって思ったのですが、
この本でHello Worldできるのは第8章のようです。

そこでHaskell先生から教わったExampleから写経してHello Worldしてみました!

ひとまず初日はここまで!