Ruby | RubyKaigi2014の知見。Rubyで強力なパターンマッチを利用できる Egison gem をインストール #rubykaigi
概要
RubyKaigi2014で話題になった、強力なパターンマッチを利用できる Egison gem をインストールして
簡単な動作確認をしてみます。
ちなみに読み方は「えじそん」ではなく、「えぎそん」。江木さんが作ったから。
インストール
$ gem i egison --no-ri --no-doc
Fetching: egison-1.0.0.gem (100%)
Successfully installed egison-1.0.0
1 gem installed
動作確認
作者の江木さんの記事を参考に四つ子素数を出力してみます。
続編 - RubyにHaskellよりも強力なパターンマッチを実装した
四つ子素数 Wikipedia
require 'egison'
require 'prime'
require 'pp'
include Egison
twin_primes = match_stream(Prime) {
with(List.(*_, _x, __("x + 2"), __("x + 6"), __("x + 8"), *_)) {
[x, x + 2, x + 6, x + 8]
}
}
pp twin_primes.take_while { |e|e.last <= 10_000 }
- 出力
$ ruby quadruplets_primes.rb
[[5, 7, 11, 13],
[11, 13, 17, 19],
[101, 103, 107, 109],
[191, 193, 197, 199],
[821, 823, 827, 829],
[1481, 1483, 1487, 1489],
[1871, 1873, 1877, 1879],
[2081, 2083, 2087, 2089],
[3251, 3253, 3257, 3259],
[3461, 3463, 3467, 3469],
[5651, 5653, 5657, 5659],
[9431, 9433, 9437, 9439]]
参照
Egison GitHub
Egison RubyGems
Egison Ruby スライドショー
RubyにHaskellよりも強力なパターンマッチを実装した
続編 - RubyにHaskellよりも強力なパターンマッチを実装した