[ruby-list:50045] Re: 異なるProcオブジェクトが同じ構造を持つかどうか確かめたい
From:
Tanaka Kazuki <mail@...>
Date:
2015-01-06 01:43:57 UTC
List:
ruby-list #50045
> 欲していたものではないかもしれないので、ご注意ください。> > (....中略)> > 承知の上ならすみません。
なるほど、承知の上ではありませんでした...勉強になります. 「一般化は出来ませんが」という言葉を希望的に捉えすぎていましたが、
今回のZコンビーターの例ですとランダムにλ式を生成して
ISeqを使って同値性を確認するとほとんど至る所で同値を確認出来たのでとりあえず満足しました.
https://gist.github.com/gogotanaka/b8c5688863d9c4774cd8
すみません ISeq に対するリテラシーがなさ過ぎるので勉強して出直して来ます....
田中--===============================Keio university mathematics 田中 和希 Kazuki Tanaka
mail: mail@tanakakazuki.comHP: http://gogotanaka.me/Blog: http://blog.gogotanaka.me/Twitter: @gogo_tanakaFacebook: https://www.facebook.com/gogogogotanaka===============================
> Date: Mon, 5 Jan 2015 21:08:07 +0900
> From: mame@ruby-lang.org
> To: ruby-list@ruby-lang.org
> Subject: [ruby-list:50044] Re: 異なるProcオブジェクトが同じ構造を持つかどうか確かめたい
>
> > ありがとうございます!!正しく欲していたものです!!
>
> 欲していたものではないかもしれないので、ご注意ください。
>
> 環境を無視して ISeq の物理的等価判定をしてるようなので、
> 例えば同じ定義のクロージャでも
>
> f = ->(x) { x }
> g = ->(x) { x }
> p ISeq.of(f) == ISeq.of(g) #=> false
>
> という結果になりますし、逆に明らかに異なるクロージャでも
>
> f = ->(x) { ->(y) { x } }
> g = f.(1)
> h = f.(2)
> p ISeq.of(g) == ISeq.of(h) #=> true
>
> という結果になります。
>
> 承知の上ならすみません。
>
>
> 2015年1月5日 20:15 Tanaka Kazuki <mail@tanakakazuki.com>:
> >> 一般化はできないと思いますが、この例では
> >>
> >> ISeq = RubyVM::InstructionSequence
> >> ISeq.of(v1) == ISeq.of(v2) #=> true
> >>
> >> になりますね。
> >
> > ありがとうございます!!正しく欲していたものです!!
> >
> > 小学生並みの感想ながら RubyVM::InstructionSequence すごいですね.
> >
> > 後学に生かします.
> >
> > 田中
> > --
> > ===============================
> > Keio university mathematical sciences
> > 田中 和希 Kazuki Tanaka
> >
> > mail: mail@tanakakazuki.com
> > HP: http://gogotanaka.me/
> > Blog: http://blog.gogotanaka.me/
> > Twitter: @gogo_tanaka
> > Facebook: https://www.facebook.com/gogogogotanaka
> > ===============================
> >
> >
> >> Date: Mon, 5 Jan 2015 14:08:17 +0900
> >> From: nobu@ruby-lang.org
> >> To: ruby-list@ruby-lang.org
> >> Subject: [ruby-list:50042] Re: 異なるProcオブジェクトが同じ構造を持つかどうか確かめたい
> >
> >>
> >> On 2015/01/05 12:25, Tanaka Kazuki wrote:
> >> > 動的に作られた異なるProcオブジェクトが同じ構造を持つかどうか(つまり抽象計算上同一と言えば良いのでしょうか)
> >> >
> >> > 調べる良いを方法に頭を悩まさせており、皆様のご教授を賜いたくこちらに文書を綴りました.
> >> >
> >> >
> >> > RubyでZコンビネーター遊びをしている時に問題に当たりました.
> >> >
> >> > https://gist.github.com/gogotanaka/b8c5688863d9c4774cd8
> >>
> >> 一般化はできないと思いますが、この例では
> >>
> >> ISeq = RubyVM::InstructionSequence
> >> ISeq.of(v1) == ISeq.of(v2) #=> true
> >>
> >> になりますね。
> >>
> >> --
> >> --- 僕の前にBugはない。
> >> --- 僕の後ろにBugはできる。
> >> 中田 伸悦