Как оценивается Proc#==
? RDoc говорит:
prc == other_proc → true или false
Возвращает true, если prc - это тот же объект, что и other_proc, или если они оба являются procs с одним и тем же телом.
Но непонятно, что значит иметь "одно и то же тело". Одним из условий является то, что арность должна быть одинаковой:
->{} == ->{} # => true
->{} == ->x{} # => false
->x{} == ->x{} # => true
->x{} == ->y{} # => true
->x{} == ->y,z{} # => false
Но есть нечто большее. Как говорит RDoc, тело имеет значение:
->{nil} == ->{nil} # => true
->{nil} == ->{false} # => false
->{false} == ->{false} # => true
Но в то же время похоже, что proc не полностью оценен:
->{} == ->{nil} # => false
->{false} == ->{1 == 2} # => false
В какой степени оценивается тело?