[#46049] [ruby-trunk - Feature #6590] Dealing with bigdecimal, etc gems in JRuby — "mrkn (Kenta Murata)" <muraken@...>
[#46078] [ruby-trunk - Feature #2565] adding hooks for better tracing — "mame (Yusuke Endoh)" <mame@...>
On Mon, Jul 02, 2012 at 03:06:59AM +0900, mame (Yusuke Endoh) wrote:
[#46127] [ruby-trunk - Feature #2565] adding hooks for better tracing — "vo.x (Vit Ondruch)" <v.ondruch@...>
[#46160] [ruby-trunk - Feature #6693][Open] Don't warn for unused variables starting with _ — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>
[#46163] [ruby-trunk - Feature #6695][Open] Configuration for Thread/Fiber creation — "ko1 (Koichi Sasada)" <redmine@...>
[#46172] [ruby-trunk - Feature #6697][Open] [PATCH] Add Kernel#Symbol conversion method like String(), Array() etc. — "madeofcode (Mark Dodwell)" <mark@...>
[#46236] [ruby-trunk - Bug #6704][Open] Random core dump — "trans (Thomas Sawyer)" <transfire@...>
[#46248] building ruby-1.9.3-p194 on AIX 6.1 TL05 SP06 — Perry Smith <pedzsan@...>
I am just now starting to debug this but hoped someone has already =
Hi Perry
Hi Perry,
[#46262] [ruby-trunk - Feature #6710][Open] new special binding specifier :isolated — "ko1 (Koichi Sasada)" <redmine@...>
[#46276] Lambdaification of Method Calls — Robert Klemme <shortcutter@...>
Hi,
[#46320] [ruby-trunk - Feature #6721][Open] Object#yield_self — "alexeymuranov (Alexey Muranov)" <redmine@...>
[#46339] [ruby-trunk - Bug #6724][Open] waaaaaaant! ( — "zenspider (Ryan Davis)" <redmine@...>
On Thu, Jul 12, 2012 at 08:58:36AM +0900, zenspider (Ryan Davis) wrote:
On Tue, Jul 17, 2012 at 6:27 PM, Aaron Patterson
[#46377] [ruby-trunk - Feature #6727][Open] Add Array#rest (with implementation) — "duckinator (Nick Markwell)" <nick@...>
[#46420] [ruby-trunk - Feature #6731][Open] add new method "Object.present?" as a counter to #empty? — "rogerdpack (Roger Pack)" <rogerpack2005@...>
[#46500] [ruby-trunk - Feature #6739][Open] One-line rescue statement should support specifying an exception class — Quintus (Marvin Gülker) <sutniuq@...>
[#46535] [ruby-trunk - Bug #6749][Open] rdoc of Time class (incorrect explanation of leap seconds) — "stomar (Marcus Stollsteimer)" <redmine@...>
Hi Eric,
On Jul 23, 2012, at 11:52 PM, [email protected] wrote:
Am 24.07.2012 19:44, schrieb Eric Hodel:
[#46546] Fwd: [ruby-cvs:43609] ko1:r36433 (trunk): * thread.c (rb_thread_call_without_gvl2): added. — SASADA Koichi <ko1@...>
Hi,
SASADA Koichi <[email protected]> wrote:
[#46553] [ruby-trunk - Feature #2565] adding hooks for better tracing — "tenderlovemaking (Aaron Patterson)" <aaron@...>
[#46564] Ruby under CI - Windows — Luis Lavena <luislavena@...>
Hello,
[#46574] [ruby-trunk - Feature #6762][Open] Control interrupt timing — "ko1 (Koichi Sasada)" <redmine@...>
I was suggesting "interruptible" as a better alternative for
[#46577] [ruby-trunk - Feature #6763][Open] Introduce Flonum technique to speedup floating computation on th 64bit environment — "ko1 (Koichi Sasada)" <redmine@...>
[#46586] [ruby-trunk - Bug #6764][Open] IO#read(size, buf) causes can't set length of shared string in trunk (2.0.0dev) — "nahi (Hiroshi Nakamura)" <nakahiro@...>
[#46641] [ruby-trunk - Bug #6780][Open] cannot compile zlib module, when cross-compiling. — "jinleileiking (lei king)" <jinleileiking@...>
[#46686] [ruby-trunk - Bug #6784][Open] Test failures related to numeric with x64 mingw — "h.shirosaki (Hiroshi Shirosaki)" <h.shirosaki@...>
[#46741] [ruby-trunk - Bug #6789][Open] parse.y compilation error due not updated id.h — "luislavena (Luis Lavena)" <luislavena@...>
[#46744] [ruby-trunk - Bug #6791][Open] ext/js on/generator/generator.c fails to compile on nightly build (AIX 6.1) — "pedz (Perry Smith)" <pedz@...>
Hi Perry,
[#46772] Ruby 1.9.3 release? — Charles Oliver Nutter <headius@...>
JRuby will soon release 1.7.0pre2, the second preview of 1.7. Perhaps
(2012/07/26 7:07), Charles Oliver Nutter wrote:
On Sat, Jul 28, 2012 at 10:59 PM, NARUSE, Yui <[email protected]> wrote:
[#46792] [ruby-trunk - Bug #6799][Open] Digest::*.hexdigest returns an ASCII-8BIT String — "Eregon (Benoit Daloze)" <redmine@...>
[#46832] [ruby-trunk - Bug #6807][Open] Can't compile ruby without ruby — "devcurmudgeon (Paul Sherwood)" <storitel@...>
[#46834] [ruby-trunk - Feature #6808][Open] Implicit index for enumerations — "trans (Thomas Sawyer)" <transfire@...>
[#46838] [ruby-trunk - Bug #6810][Open] `module A::B; end` is not equivalent to `module A; module B; end; end` with respect to constant lookup (scope) — "alexeymuranov (Alexey Muranov)" <redmine@...>
[#46854] [ruby-trunk - Feature #6811][Open] File, Dir and FileUtils should have bang-versions of singleton methods that fails silently — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>
[#46896] (Half-baked DRAFT) new `require' framework — SASADA Koichi <ko1@...>
Hi,
2012/7/31 SASADA Koichi <[email protected]>
On 31/07/12 13:29, SASADA Koichi wrote:
On Tue, Jul 31, 2012 at 12:07 PM, Alex Young <[email protected]> wrote:
On 01/08/2012, at 5:59 AM, Trans wrote:
(2012/07/31 21:29), SASADA Koichi wrote:
If one is considering importing archive files like zip, tar, jar, or gem, I
On Tue, Aug 7, 2012 at 8:48 AM, Rocky Bernstein <[email protected]> wrote:
[ruby-core:46249] [ruby-trunk - Feature #4151] Enumerable#categorize
Issue #4151 has been updated by Eregon (Benoit Daloze).
trans (Thomas Sawyer) wrote:
> I have given this subject matter considerable thought, and I believe the best definition is as follows:
>
> # Apply each element of an enumerable to a hash
> # by iterating over each element and yielding
> # the hash and element.
> #
> # [1,2,3].categorize{|h,e| h[e] = e+1 }
> # #=> {1=>2, 2=>3, 3=>4}
> #
> def categorize(init={})
> h = init
> each{ |v| yield(h,v) }
> h
> end
That's Enumerable#each_with_object with
arguments reversed and a default {} for obj:
[1,2,3].categorize { |h,e| h[e] = e+1 }
[1,2,3].each_with_object({}) { |e,h| h[e] = e+1 }
It's shorter, mostly because of #each_with_object length (#6687)
#index_by is #group_by with a "keep last" merging strategy.
Categorize can do all of this, and much more. That's why I think it's interesting.
But I agree we need simpler methods for most use cases.
----------------------------------------
Feature #4151: Enumerable#categorize
https://bugs.ruby-lang.org/issues/4151#change-27875
Author: akr (Akira Tanaka)
Status: Assigned
Priority: Low
Assignee: akr (Akira Tanaka)
Category:
Target version: 2.0.0
=begin
Hi.
How about a method for converting enumerable to hash?
enum.categorize([opts]) {|elt| [key1, ..., val] } -> hash
categorizes the elements in _enum_ and returns a hash.
The block is called for each elements in _enum_.
The block should return an array which contains
one or more keys and one value.
p (0..10).categorize {|e| [e % 3, e % 5] }
#=> {0=>[0, 3, 1, 4], 1=>[1, 4, 2, 0], 2=>[2, 0, 3]}
The keys and value are used to construct the result hash.
If two or more keys are provided
(i.e. the length of the array is longer than 2),
the result hash will be nested.
p (0..10).categorize {|e| [e&4, e&2, e&1, e] }
#=> {0=>{0=>{0=>[0, 8],
# 1=>[1, 9]},
# 2=>{0=>[2, 10],
# 1=>[3]}},
# 4=>{0=>{0=>[4],
# 1=>[5]},
# 2=>{0=>[6],
# 1=>[7]}}}
The value of innermost hash is an array which contains values for
corresponding keys.
This behavior can be customized by :seed, :op and :update option.
This method can take an option hash.
Available options are follows:
- :seed specifies seed value.
- :op specifies a procedure from seed and value to next seed.
- :update specifies a procedure from seed and block value to next seed.
:seed, :op and :update customizes how to generate
the innermost hash value.
:seed and :op behavies like Enumerable#inject.
If _seed_ and _op_ is specified, the result value is generated as follows.
op.call(..., op.call(op.call(seed, v0), v1), ...)
:update works as :op except the second argument is the block value itself
instead of the last value of the block value.
If :seed option is not given, the first value is used as the seed.
# The arguments for :op option procedure are the seed and the value.
# (i.e. the last element of the array returned from the block.)
r = [0].categorize(:seed => :s,
:op => lambda {|x,y|
p [x,y] #=> [:s, :v]
1
}) {|e|
p e #=> 0
[:k, :v]
}
p r #=> {:k=>1}
# The arguments for :update option procedure are the seed and the array
# returned from the block.
r = [0].categorize(:seed => :s,
:update => lambda {|x,y|
p [x,y] #=> [:s, [:k, :v]]
1
}) {|e|
p e #=> 0
[:k, :v]
}
p r #=> {:k=>1}
The default behavior, array construction, can be implemented as follows.
:seed => nil
:op => lambda {|s, v| !s ? [v] : (s << v) }
Note that matz doesn't find satisfact in the method name, "categorize".
[ruby-dev:42681]
Also note that matz wants another method than this method,
which the hash value is the last value, not an array of all values.
This can be implemented by enum.categorize(:op=>lambda {|x,y| y}) { ... }.
But good method name is not found yet.
[ruby-dev:42643]
--
Tanaka Akira
Attachment: enum-categorize.patch
=end
--
http://bugs.ruby-lang.org/