Scalaについてちょっと考えたこと

正しいかどうかはとりあえずおいておいて。

なぜ関数型プログラミング言語は難しいのか。答は簡単。プログラムを式で定義する必要があるから。式で定義できると、決まった入力に対して、式に定義された結果が返ってくる。式で定義されていたものはバグではなくて、仕様と言えるものだから、手順書で記述したプログラムよりも格段に良いはず。とはいえ、仕様のバグもあるわけだから、楽が出来るともいえない。

ということで、Scalaとか、オブジェクト指向プログラミングと関数型プログラミングのハイブリッドだけど、両方の概念をうまくつなげて使うためには、ノウハウが必要だろう、と考えている。

1つの副作用のない関数だけを持つクラスは無駄だから、関数クラスとして定義する。従来Utilクラスを作って対応していたようなものとか。パッケージはfuncなどとして別パッケージにしておくのが吉かもしれない。なぜかというと共通的に使えるモジュール群となるはずだから、オブジェクトを分類するためのパッケージとは別とした方がいいはずだから。libという名前でもいいかもしれない。

関数から関数を生成するような関数は、単純に考えるとファクトリークラスと考えてよいから、オブジェクト指向のデザインパターンを参考にして考えていいんじゃなかろうか。

一般的に考えて、関数の方が扱うデータの抽象度は高い。また再帰的構造のデータ型に強いはず。クラス階層に見られるようなデータ拡張に対してはオブジェクト指向の方が強いはず。

そういったところを意識してScalaを勉強するとはかどるに違いない。

同じタグの記事: Scala
同じカテゴリの記事: General
関連書籍: Scala