Project

General

Profile

Feature #14724

chains of inequalities

Added by gotoken (Kentaro Goto) about 2 years ago. Updated about 2 years ago.

Status:
Open
Priority:
Normal
Target version:
-
[ruby-core:86771]

Description

In mathematics, chain of inequations is a shorthand notation for the conjunction of several inequations involving common expressions.

For example, a < b <= c for a < b && b <= c

Chain notation makes code clearer, in particular, long common expression cases will be so. E.g.,

cur.to_i - 2 <= timeval.tv_sec <= cur.to_i

is easier to read than

cur.to_i - 2 <= timeval.tv_sec && timeval.tv_sec <= cur.to_i

because in the latter case we have to verify whether timeval.tv_sec is common or not by eyes.

Current syntax allows but redefining builtin methods are considered not practical. So here I request as a new syntax for the chains.

Use cases (applicable conjunctions)

lib/matrix.rb:

    unless 0 <= column && column < column_count

lib/time.rb documents:

    # block.  For example:
    #
    #     Time.parse(...) {|y| 0 <= y && y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}

spec/ruby/optional/capi/bignum_spec.rb:

  raise "Bignum#coerce returned Fixnum" if fixnum_min <= n && n <= fixnum_max

test/fiddle/test_import.rb:

        assert(cur.to_i - 2 <= timeval.tv_sec && timeval.tv_sec <= cur.to_i)

tool/jisx0208.rb:

        unless 0x8140 <= sjis && sjis <= 0xFCFC

Also available in: Atom PDF