Ruby
rubykaigi
egison

RubyKaigi2014の知見。Rubyで強力なパターンマッチを利用できる Egison gem をインストール #rubykaigi

More than 3 years have passed since last update.

Ruby | RubyKaigi2014の知見。Rubyで強力なパターンマッチを利用できる Egison gem をインストール #rubykaigi

概要

RubyKaigi2014で話題になった、強力なパターンマッチを利用できる Egison gem をインストールして
簡単な動作確認をしてみます。
ちなみに読み方は「えじそん」ではなく、「えぎそん」。江木さんが作ったから。

Egison GitHub
Egison RubyGems

インストール

$ 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よりも強力なパターンマッチを実装した