[ruby-list:50044] Re: 異なるProcオブジェクトが同じ構造を持つかどうか確かめたい

From: Yusuke Endoh <mame@...>
Date: 2015-01-05 12:08:07 UTC
List: ruby-list #50044
> ありがとうございます!!正しく欲していたものです!!

欲していたものではないかもしれないので、ご注意ください。

環境を無視して 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はできる。
>> 中田 伸悦

In This Thread