技術memo

関数型ゴースト

Scala言語を急ぎ足で学ぶ(勉強メモ 2/2)

勉強メモその2です。

その1に戻る

型定義(クラス、トレイト)

Scalaで基本的な型を定義する

不変データ型、可変データ型、抽象クラス・インターフェース(トレイト)、ジェネリック型、代数的データ型、列挙型について。 オブジェクト指向言語としてはスマートに書けるように感じます。

オブジェクトの比較(等値性、同一性、大小)

Scalaでオブジェクトの比較(等値性、同一性、大小)

caseクラスは有能ですね。Immutable保証ができているデータ型は大抵==で等値比較できて便利です。

評価戦略

Scalaの名前呼び出しとlazyについて

遅延評価っぽいこともできる、と。call-by-nameの挙動は面白いですね。

モなんとか

Scalaのかんたんなモナド

Option, List, Eitherについて簡単に動作確認。Listって言ってますけど結果はVectorですね……。

コード中に無い参考ページ

感想

  • 全体的に糖衣構文が多めな印象です。二項演算子、プレイスホルダー構文、apply/update、for式など。
    • それでも「一つの法則で多くの機能を実現」という方針は良さそうに思えます。
    • 何にしても慣れるまでは展開結果をイメージしていく必要がありそうです。
  • オブジェクト指向っぽい書き方は、valプロパティとプライマリコンストラクタの効果でだいぶ書きやすい印象です。
    • シングルトンオブジェクトがC# にほしかったですね……。
    • traitの実装多重継承も便利そうです。使い方によっては危うそうな気もしますが。
  • 触れていない重要トピックはまだまだたくさんありそうです。
    • 型パラメータと型境界
    • unapplyとパターンマッチ
    • implicit parameterやimplicit conversion
    • 型クラス (……)
  • ネット情報を漁るより、本を読み込んだほうが早かったのでは……。