Scala関数型デザイン&プログラミングのサンプルコード
最近出たこの本
サンプルがあります。
github.com
サンプルには
- テキスト内のソースコード全文
- 練習問題の概要と解答
が入っており、sbtで動いているので一通り実行可能な環境が揃っておりますが、sbt is 何みたいな人、つまり僕からすると結構不親切です。
sbtを勉強しろと言われればそれまでですが、sbt自体についてはこちらを参考にするといいと思います。
www.casleyconsulting.co.jp
サンプルコードを実行したい
以下のコマンドを実行してみましょう。
$ git clone git@github.com:fpinscala/fpinscala.git
$ cd fpinscala
$ sbt answers/console
> import fpinscala.gettingstarted._
scala> MyModule.abs(42)
res2: Int = 42
サンプルコード 解答編のGettingStarted.scalaの、MyModuleオブジェクトのabsメソッドを試したい場合のコマンドです。
なお、sbt内でこんな感じでタブを押すと、どんなモジュールが入っているか、そのモジュールにどんなメソッドが入っているか補完してくれます。ソースコードを読んでもいいですが、こういう方法もあるのです。
scala> import fpinscala.
applicative errorhandling iomonad localeffects monoids parsing streamingio
datastructures gettingstarted laziness monads parallelism state testing
scala> import fpinscala.gettingstarted.
AnonymousFunctions FormatAbsAndFactorial MonomorphicBinarySearch MyModule PolymorphicFunctions
scala> import fpinscala.gettingstarted.MyModule.
abs asInstanceOf factorial factorial2 fib formatResult isInstanceOf main toString
(なお、自分の環境はoh-my-zshなので、素のzshやbashだとどうなるかわかりません)
適当でざっくりした解説
- git cloneでソースコードを落とす
- sbt answers/consoleでanswersディレクトリに移動しつつREPLを起動する
- import fpinscala.gettingstarted._でモジュールをimport
公式のREADMEもあわせて読むとよいでしょう。
github.com
とりあえずこれ実行しときゃおーけーで終わらせたような感じになりましたが、それで終わらせるのではなくここからは各自勉強していく必要があります。
雑感
sbt→project exercises→runで実行できるものはmainの中で実装されているものだけで、すべてのメソッドがカバーされているわけではありません。まあ、全部のメソッドについて試せるようにコード書いていたら実行結果も何がなんだかわからなくなりそうですし。