[#59462] [ruby-trunk - Bug #9342][Open] [PATCH] SizedQueue#clear does not notify waiting threads in Ruby 1.9.3 — "jsc (Justin Collins)" <redmine@...>

9 messages 2014/01/02

[#59466] [ruby-trunk - Bug #9343][Open] [PATCH] SizedQueue#max= wakes up waiters properly — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2014/01/02

[#59498] [ruby-trunk - Bug #9352][Open] [BUG] rb_sys_fail_str(connect(2) for [fe80::1%lo0]:3000) - errno == 0 — "kain (Claudio Poli)" <claudio@...>

10 messages 2014/01/03

[#59516] [ruby-trunk - Bug #9356][Open] TCPSocket.new does not seem to handle INTR — "charliesome (Charlie Somerville)" <charliesome@...>

48 messages 2014/01/03

[#59538] [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — "shyouhei (Shyouhei Urabe)" <shyouhei@...>

33 messages 2014/01/03
[#59582] Re: [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — SASADA Koichi <ko1@...> 2014/01/06

Intersting challenge.

[#59541] Re: [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — Eric Wong <normalperson@...> 2014/01/04

Hi, I noticed a trivial typo in array.c, and it fails building struct.c

[#59583] [ruby-trunk - Bug #9367][Open] REXML::XmlDecl doesn't use user specified quotes — "bearmini (Takashi Oguma)" <bear.mini@...>

12 messages 2014/01/06

[#59642] [ruby-trunk - Bug #9384][Open] Segfault in ruby 2.1.0p0 — "cbliard (Christophe Bliard)" <christophe.bliard@...>

11 messages 2014/01/08

[#59791] About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...>

A while ago I created a proof-of-concept that I intended to use in my

16 messages 2014/01/15
[#59794] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/15

On 15 Jan 2014, at 11:58, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[#59808] Re: About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...> 2014/01/16

Em 15-01-2014 19:42, Eric Hodel escreveu:

[#59810] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/16

On 16 Jan 2014, at 02:15, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[#59826] Re: About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...> 2014/01/17

Em 16-01-2014 19:43, Eric Hodel escreveu:

[#59832] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/17

On 17 Jan 2014, at 04:22, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[ruby-core:59883] Re: [ruby-trunk - Feature #9428] Inline argument expressions and re-assignment

From: Matthew Kerwin <matthew@...>
Date: 2014-01-20 02:33:23 UTC
List: ruby-core #59883
On 20 January 2014 10:41, <tom@tomwardrop.com> wrote:

> Issue #9428 has been updated by Tom Wardrop.
>
>
> 1. I know you said you're not a fan of allowing expression when assigning
> default values to optional parameters, but the point about aesthetics
> applies equally to them also.
>

That's partly why I'm not a fan.  If I could think of a valid, useful
alternative I would strongly suggest it.  I know it wouldn't be adopted
(backwards compatibility, if nothing else) but I'd propose it anyway.  The
best I can come up with is another special method, along the lines of
method_given?, perhaps:

  def foo bar, baz=?  # no idea what syntax to propose here
    baz = 42 unless argument_given? :baz
  end

It's not great, obviously, but it removes arbitrary code from the 'def'
line.



> 1. The rule is relatively simple. The first identifier (lvar/method)
> encountered is automatically assigned the value of the argument passed to
> the method or proc. That's the rule, the first identifier (valid variable
> name) is assigned the argument value. If you want to refer to `self.id`,
> you must use `self.id` to disambiguate as you would have to in many other
> scenario's in Ruby. In the example you highlighted `def foo( arg.to_i )`,
> the identifier `arg` is encountered and automatically assigned the argument
> value before the expression continues execution.
>

"First encountered" in regular left-to-right parsing order?

  def foo( a[b] )
#=>
  def foo a
    a = a[b]
  end

?



> 1. The same problem exists for expressions used as default values for
> optional arguments.  Debugging is the same for each. If it's not clear
> where the error occurred, one could always temporarily break the argument
> definitions over multiple lines while debugging. I don't think debugging
> would be any worse than debugging a long method chain like `Hash[var.select
> { |v| #bleh }.map { |v| # blah }]`. I therefore don't think debugability
> can be used against this proposal.
>

I agree that existing long/complex lines are hard to debug.  But why add
the opportunity for more such lines?  Especially in a place that is
traditionally free from such concerns?  With my background as a C
programmer I instinctively see the 'def' line as free from execution; it's
a definition, something that informs the interpreter and the human reader
about the nature of the program/data/etc.  I would be surprised if I
started seeing runtime exceptions raised from these traditionally
compile-time-only lines.

Again, I know it's already possible to achieve these errors using optional
args, but I concede that as a necessary evil in the absence of an
alternative.  And, since we're stuck with them, I prefer a culture of
promoting the least amount of executable code possible in that line; thus
some of my opposition to this proposal.



> 1. Technically, for optional arguments, you can have an expression for
> when an argument is given, and an expression for when an argument is
> optional. It remains consistent in this respect.
>
>     `def foo(id.to_i = config[:default_id])`


This introduces some amount of confusion. Which of the following is
equivalent?

  id = id.to_i // id = config[:default_id]

or:

  id = id.to_i // id = config[:default_id].to_i

Either way, this is very confusing when, anywhere else in a Ruby script, it
would mean:

  id.to_i=( config[:default_id] )


-- 
  Matthew Kerwin
  http://matthew.kerwin.net.au/

In This Thread

Prev Next