I made a general cmp function for arbitrary data types. Let me know if J
has a built-in function with the same API.

https://github.com/mcandre/mcandre/blob/master/j/cmp.j

Example usage:

   1 cmp 2
-1
   2 cmp 1
1
   1 cmp 1
0
   'abc' cmp 'def'
-1
   'def' cmp 'abc'
1
   'abc' cmp 'abc'
0
   1 lt 2
1
   2 lt 1
0
   1 lte 2
1
   1 lte 1
1
   'abc' gte 'def'
0
   'abc' gte 'abb'
1

Cheers,

Andrew Pennebaker
www.yellosoft.us

On Sun, Oct 30, 2011 at 4:29 PM, Andrew Pennebaker <
[email protected]> wrote:

> Is there a dyad that returns -1 for string x less than string y, 1 for x
> greater than y, and 0 for x equals y?
>
> -: Almost does this, but it only tests equality; it's not specific enough
> to tell you whether x or y is greater. Instead it just returns 0 for not
> equal and 1 for equal.
>
> The compare dyad almost does this, but with an API with complexity on the
> order of diff or subversion.
>
>    'abc' compare 'def'
> 0 [0] abc
> 1 [0] def
>
>    'abc' compare 'abc'
> no difference
>
> In a conditional you would have to use (('abc' compare 'abc') compare 'no
> difference') compare 'no difference' ad infinitum just to see if there
> was 'no difference' in the original compare!
>
> Cheers,
>
> Andrew Pennebaker
> www.yellosoft.us
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to