More Related Content
Similar to Immutable List Gem (KLab ALM版) (6)
Immutable List Gem (KLab ALM版)
- 7. Ruby vs OCaml
Ruby vs OCaml
- OCaml の圧倒的な勝利
Ruby でも OCaml のよう
なクイックソートを書きたい!
7
Ruby OCaml
行数 29 5
昇順降順の
変更箇所
2 1
可読性 △ ○
- 8. Ruby でクイックソート その2
OCaml Ruby
左: OCamlの5行のコードを List.partition を使わないで再実装
右: 左のコードを Ruby に移植したコード
Ruby でも関数型スタイルにプログラミングできた!
8
- 13. Immutable Singly Linked List を実装
普通に Ruby で実装してもネタとして面白くない
Array は組み込みクラスであり、C言語で実装されているので、
普通にRubyで実装してもパフォーマンス的にも勝ち目がない
「C拡張」として、実装しよう!
13
- 14. Ruby の C拡張
C拡張
- C言語で書いたコードをリンクして Ruby から利用する仕組み
部分的な処理の高速化・ラッパーライブラリなどに使われる
例:C拡張を利用した gem
- スクレイピングライブラリの nokogiri
- SQlite3 のラッパーライブラリの sqlite3
14
- 31. Arrayの連結
C = A+B を行なった時、AとBの内容を全てコピーする
1 2 3 4 5 6 7 8+
A B
1 2 3 4 5 6 7 8
A B
1 2 3 4 5 6 7 8
C
- 32. Immutable Singly Linked List の連結
C = A+B を行なった時、Bとの差分だけがコピーされる
1 2 3 4 5 6 7 8+
A B
1 2 3
A
1 2 3
C
4 5 6 7 8
B