のんびりSEの議事録

プログラミング系のポストからアプリに関してのポストなどをしていきます。まれにアニメ・マンガなど

Scalaで始める関数型プログラミング入門

なんとなく今更感ではあるものの、ちゃんとやっていきたいなと思ったので備忘録です。

関数型のメリット

  • 副作用の排除

副作用とは

ある機能がコンピューターの(論理的な)状態を変化させ、それ以降で得られる結果に影響をあたえることをいう

  • 変数への値の代入
  • データ構造を直接変更する
  • オブジェクトのフィールドを設定する
  • 例外をスローする、またはエラーで停止する
  • コンソールに出力する、ユーザ入力を読み取る
  • ファイルを読み取る、ファイルに書き込む
  • 画面上に描画する

純粋関数

副作用を持たない関数

メリット

  • 宣言的な記述なため、簡潔に書けることが多く、関数の仕様を理解しやすい
  • 副作用がないため、形式的な証明がし易い
  • 関数の評価結果がコンテキストに依存しないため、テストがし易い
  • コンテキストに影響を与えないため、関数を組み合わせて利用しても相互に影響しない

インストール

scalaenvを使ったインストール

scalaenvのインストール

$ git clone git://github.com/mazgi/scalaenv.git ~/.scalaenv
$ echo 'export PATH="${HOME}/.scalaenv/bin:${PATH}"' >> ~/.bashrc
$ echo 'eval "$(scalaenv init -)"' >> ~/.bashrc

scalaのインストール

$ scalaenv install -l
$ scalaenv install scala-2.11.7
$ scalaenv versions
続きを読む

rubyでEnumerableを用いたSQLライクな操作

rubyのEnumerableモジュールには様々な便利メソッドがありますが、今回はそれを活用して、SQLで出来る操作でrubyならこんな感じかなというやり方をまとめていきます。 特に公式ではただのArrayでのみの簡潔な解説となってますが、以下のデータではArray内Hashでの操作をメインとして説明していきます。

続きを読む