Chip Salzenberg <[email protected]> wrote
   on Tue, 17 May 2011 18:35:04 PDT: 

>> The 65-column nroff manpage limit is severely troublesome.

> Shirley, this is an obsolete requirement.  Heck, my TRS-80 Model I
> almost-toy could show 64 columns.  In 1978.

Manpages *can* get linewrapped or snipped at 65 columns.  Currently
they seem actually to work on at least one system, but I haven't 
done any checking around.
 
> Why not 100 at least, these days?

Well, 100 isn't actually enough.  See below.

But I very much feel the table would be easier to read this way:

             1         2         3         4         5         6         7      
   8         9         10        11        12        13
    
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

    Left      Right      Description and pseudocode                        Like
    
==============================================================================================================================
    Any       undef      check whether Any is undefined                    
!defined Any
    Any       Object     invoke ~~ overloading on Object, or die

    ARRAY1    ARRAY2     recurse on paired elements of ARRAY1 and ARRAY2[2] 
ARRAY1[0] ~~ ARRAY2[0] && ARRAY1[1] ~~ ARRAY2[1] && ...
    HASH      ARRAY      any ARRAY elements exist as HASH keys              
grep { exists HASH->{$_} } ARRAY
    Regexp    ARRAY      any ARRAY elements pattern match Regexp            
grep { /Regexp/ } ARRAY
    undef     ARRAY      undef in ARRAY                                     
grep { !defined } ARRAY
    Any       ARRAY      smart match each ARRAY element[3]                  
grep { Any ~~ $_ } ARRAY

    HASH1     HASH2      all same keys in both HASHes                       
keys HASH1 == grep { exists HASH2->{$_} } keys HASH1
    ARRAY     HASH       any ARRAY elements exist as HASH keys              
grep { exists HASH->{$_} } ARRAY
    Regexp    HASH       any HASH keys pattern match Regexp                 
grep { /Regexp/ } keys HASH
    undef     HASH       always false (undef can't be a key)                0 
== 1
    Any       HASH       HASH key existence                                 
exists HASH->{Any}

    ARRAY     CODE       sub returns true on all ARRAY elements[1]          
!grep { !CODE->($_) } ARRAY
    HASH      CODE       sub returns true on all HASH keys[1]               
!grep { !CODE->($_) } keys HASH
    Any       CODE       sub passed Any returns true                        
CODE->(Any)

    ARRAY     Regexp     any ARRAY elements match Regexp                    
grep { /Regexp/ } ARRAY
    HASH      Regexp     any HASH keys match Regexp                         
grep { /Regexp/ } keys HASH
    Any       Regexp     pattern match                                      Any 
=~ /Regexp/

    Object    Any        invoke ~~ overloading on Object, or fall back to...
    Any       Num        numeric equality                                   Any 
== Num
    Num       nummy[4]   numeric equality                                   Num 
== nummy
    undef     Any        check whether undefined                            
!defined(Any)
    Any       Any        string equality                                    Any 
eq Any

Than I would this:

             1         2         3         4         5         6         7      
   8
    
12345678901234567890123456789012345678901234567890123456789012345678901234567890

    Left      Right      Description and pseudocode
    ===============================================================
    Any       undef      check whether Any is undefined
                   like: !defined Any

    Any       Object     invoke ~~ overloading on Object, or die

  Right operand is an ARRAY:

    Left      Right      Description and pseudocode
    ===============================================================
    ARRAY1    ARRAY2     recurse on paired elements of ARRAY1 and ARRAY2[2]
                   like: (ARRAY1[0] ~~ ARRAY2[0]) && (ARRAY1[1] ~~ ARRAY2[1]) 
&& ...
    HASH      ARRAY      any ARRAY elements exist as HASH keys
                   like: grep { exists HASH->{$_} } ARRAY
    Regexp    ARRAY      any ARRAY elements pattern match Regexp
                   like: grep { /Regexp/ } ARRAY
    undef     ARRAY      undef in ARRAY
                   like: grep { !defined } ARRAY
    Any       ARRAY      smart match each ARRAY element[3]
                   like: grep { Any ~~ $_ } ARRAY

  Right operand is a HASH:

    Left      Right      Description and pseudocode
    ===============================================================
    HASH1     HASH2      all same keys in both HASHes
                   like: keys HASH1 == grep { exists HASH2->{$_} } keys HASH1
    ARRAY     HASH       any ARRAY elements exist as HASH keys
                   like: grep { exists HASH->{$_} } ARRAY
    Regexp    HASH       any HASH keys pattern match Regexp
                   like: grep { /Regexp/ } keys HASH
    undef     HASH       always false (undef can't be a key)
                   like: 0 == 1
    Any       HASH       HASH key existence
                   like: exists HASH->{Any}

  Right operand is CODE:

    Left      Right      Description and pseudocode
    ===============================================================
    ARRAY     CODE       sub returns true on all ARRAY elements[1]
                   like: !grep { !CODE->($_) } ARRAY
    HASH      CODE       sub returns true on all HASH keys[1]
                   like: !grep { !CODE->($_) } keys HASH
    Any       CODE       sub passed Any returns true
                   like: CODE->(Any)

  Right operand is a Regexp:

    Left      Right      Description and pseudocode
    ===============================================================
    ARRAY     Regexp     any ARRAY elements match Regexp
                   like: grep { /Regexp/ } ARRAY
    HASH      Regexp     any HASH keys match Regexp
                   like: grep { /Regexp/ } keys HASH
    Any       Regexp     pattern match
                   like: Any =~ /Regexp/

  Other:

    Left      Right      Description and pseudocode
    ===============================================================
    Object    Any        invoke ~~ overloading on Object, or fall back to...

    Any       Num        numeric equality
                    like: Any == Num
    Num       nummy[4]    numeric equality
                    like: Num == nummy
    undef     Any        check whether undefined
                    like: !defined(Any)
    Any       Any        string equality
                    like: Any eq Any

Suggestions?

--tom

Reply via email to