Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rubyで関数型プログラミングをするためのgemを作った

811 views

Published on

Rubyで関数型プログラミングをするために作った
immutable_list gem
の紹介です。

IT Cafe'2013というイベントでLTする予定です。

Published in: Technology
  • Be the first to comment

Rubyで関数型プログラミングをするためのgemを作った

  1. 1. Rubyで関数型プログラミン グをするためのgemを作った @gam0022
  2. 2. 自己紹介 Twitter: @gam0022 情報科学類3年(coins11) 大五郎botの飼い主 COJT SWコース Ruby と C# けっこうなんでも書きます
  3. 3. Rubyで関数型プログラミング 一般的な言語がループで繰り返しを表現するのに対して 再帰を用いて繰り返しを表現することを ここでは、 関数型プログラミング と呼ぶことにします。
  4. 4. Rubyで関数型プログラミング Ruby の Array は 配列で実装されている。 遅い + メモリを消費する 次の操作が 先頭への要素の追加(cons) 連結(append) push などが破壊的操作 関数型プログラミングをするのには致命的
  5. 5. Rubyで関数型プログラミング リストのデータ構造を自分で作ってみた! ImmutableList
  6. 6. ImmutableList 特徴 単方向連結リスト(singly-circularly-linked list) 非破壊的(immutable) Cで実装 (C Extensions) 動作が高速
  7. 7. ImmutableList OCaml を意識したメソッド cons head, tail rev_append, rev, append length nth
  8. 8. Basic
  9. 9. Quick Sort クイックソート 一般的に最も高速なソート O(n log n)、安定ソートではない アルゴリズム 1. 適当に数(ピポット)を選ぶ 2. ピポットより小さい数を前方、大きい数を後方に分割 3. 2分割された各々のデータを、それぞれソート(1に戻る)
  10. 10. Quick Sort
  11. 11. Benchmark 先頭に長さ3のリストを連結するのにかかった秒数 連結回数 Array ImmutableList 10 1.50E-05 2.00E-05 1000 0.007251 0.00166 10000 0.727542 0.015206 100000 102.080825 0.414083
  12. 12. RubyGemsで公開中 RubyGemとは Rubyのライブラリのパッケージ管理システム
  13. 13. Install コマンド一発で導入可能
  14. 14. ご静聴ありがとうございました 詳しい話はブログで http://gam0022.net/blog/2013/10/22/immutablelist-gem/ http://gam0022.net/blog/2013/10/18/gems-withextensions/

×