LoginSignup
10
11

More than 5 years have passed since last update.

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

Posted at

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

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11