Project

General

Profile

Actions

Feature #5695

closed

CoffeeScript "is" and "isnt" keywords

Added by sunaku (Suraj Kurapati) over 12 years ago. Updated about 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
[ruby-core:41435]

Description

Hello,

Please add "is" and "isnt" keywords, which behave like the "==" and "!=" operators respectively, to Ruby. These keywords come from the CoffeeScript language. They are useful to prevent accidental assignment (forgetting a "=" in "==") and they preserve reading order, unlike inverted "if 5 == x" expressions known as "Yoda conditionals".

Thanks for your consideration.

Updated by drbrain (Eric Hodel) over 12 years ago

=begin
This would break compatibility with RubyGems:

$ egrep '\bis' lib/rubygems/package/tar_input.rb | grep -v '#'
is = new io, security_policy
yield is
is.close if is
is = zipped_stream entry
Gem::Package::TarReader.new is do |inner|
is.close if is
is = StringIO.new(dis)
is = StringIO.new(zis.inflate(entry.read))

=end

Updated by wycats (Yehuda Katz) over 12 years ago

I'm not in favor of this proposal, but I don't think it would break these
cases, because they are not of the form foo is bar. It would, however,
break this case:

def foo; end
def is(*); end

foo is 1

Yehuda Katz
(ph) 718.877.1325

On Thu, Dec 1, 2011 at 2:07 PM, Eric Hodel wrote:

Issue #5695 has been updated by Eric Hodel.

=begin
This would break compatibility with RubyGems:

$ egrep '\bis' lib/rubygems/package/tar_input.rb | grep -v '#'
is = new io, security_policy
yield is
is.close if is
is = zipped_stream entry
Gem::Package::TarReader.new is do |inner|
is.close if is
is = StringIO.new(dis)
is = StringIO.new(zis.inflate(entry.read))

=end


Feature #5695: CoffeeScript "is" and "isnt" keywords
http://redmine.ruby-lang.org/issues/5695

Author: Suraj Kurapati
Status: Open
Priority: Normal
Assignee:
Category:
Target version:

Hello,

Please add "is" and "isnt" keywords, which behave like the "==" and "!="
operators respectively, to Ruby. These keywords come from the CoffeeScript
language. They are useful to prevent accidental assignment (forgetting a
"=" in "==") and they preserve reading order, unlike inverted "if 5 == x"
expressions known as "Yoda conditionals".

Thanks for your consideration.

--
http://redmine.ruby-lang.org

Updated by regularfry (Alex Young) over 12 years ago

On 01/12/11 18:52, Suraj Kurapati wrote:

Issue #5695 has been reported by Suraj Kurapati.


Feature #5695: CoffeeScript "is" and "isnt" keywords
http://redmine.ruby-lang.org/issues/5695

Author: Suraj Kurapati
Status: Open
Priority: Normal
Assignee:
Category:
Target version:

Hello,

Please add "is" and "isnt" keywords, which behave like the "==" and "!=" operators respectively, to Ruby. These keywords come from the CoffeeScript language. They are useful to prevent accidental assignment (forgetting a "=" in "==") and they preserve reading order, unlike inverted "if 5 == x" expressions known as "Yoda conditionals".

Wouldn't it make more sense to have "is" use "==="? Then you could say,
for instance, "if x is Numeric". "is" could then be syntax sugar for
"case...when", and "isnt" could be implemented as the corresponding "else".

--
Alex

Updated by trans (Thomas Sawyer) over 12 years ago

Indeed, I have aliased #is to #include and aliased #is? as #===
before

class Collection
is Enumerable
end

Collection.is? Enumerable

Which I find exceptionally readable.

Updated by mame (Yusuke Endoh) about 12 years ago

  • Status changed from Open to Rejected
  • Priority changed from Normal to 3
  • Target version set to 3.0

I strongly believe that this proposal has no hope.

--
Yusuke Endoh

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0