Actually, I'm kind of surprised now that I didn't think of just reversing
the order of #: . A binary number is computed as a stack, with the most
significant digit being computed last but needed first to convert back to
an integer. Hence it makes the most sense to put the least significant
digit first.

Ordering is always a tricky problem. At least J displays a fairly
consistent methodology, but there are a lot of spots with no real answer.
For example, with a linked list the order of the list naturally flows
oppositely to the order of operations:
0 :: (1 :: (2 :: 3)) -> 0 1 2 3

Marshall

On Tue, Dec 13, 2011 at 12:34 PM, Dan Bron <j...@bron.us> wrote:

> It might be that in retrospect, an LSB-approach to #: would have been more
> in the spirit of J.  It would have allowed us to give the monad #: its
> proper rank of zero, for example.
>
> .. that said, it works against the grain of "most important information
> first", as expressed in our usual left-to-right positional numeral system.
> For example, would we be satisfied with results like these?
>
>           10 10 10 #: 123    NB. 3 units, 2 tens, 1 hundred
>        3 2 1
>
>           24 60 60 #: 27001  NB. 1 second, 30 minutes, 7 days
>        1 30 7
>
> Sometimes, J has to make compromises with established usage (viz, % and e.
> ).
>
>
> -Dan
>
> -----Original Message-----
> From: programming-boun...@jsoftware.com
> [mailto:programming-boun...@jsoftware.com] On Behalf Of Raul Miller
> Sent: Tuesday, December 13, 2011 10:22 AM
> To: Programming forum
> Subject: Re: [Jprogramming] How #: should have been designed
>
> After some thought, I am in favor of this version (I think first
> proposed by Henry):
>
>   ((* * <&0) ,. #:) i:3
> _1 0 1
> _1 1 0
> _1 1 1
>  0 0 0
>  0 0 1
>  0 1 0
>  0 1 1
>   #. ((* * <&0) ,. #:) i:3
> _3 _2 _1 0 1 2 3
>
> Note also:
>   2 | ((* * >&0) ,. #:) i:3
> 0 0 1
> 0 1 0
> 0 1 1
> 0 0 0
> 1 0 1
> 1 1 0
> 1 1 1
>
> That said this could be further "improved" by making the #: result
> follow the p. result pattern (least significant bit first):
>
>   (|.@#: ,. * * <&0) i:3
> 1 1 _1
> 1 0 _1
> 0 1 _1
> 0 0  0
> 1 1  0
> 1 0  0
> 0 1  0
>   (|.@#: , * * <&0)"0 i:3
> 1  0 _1
> 0  1 _1
> 1 _1  0
> 0  0  0
> 1  0  0
> 0  1  0
> 1  1  0
>   #.@|. :(#. |.)"1 (|.@#: ,. * * <&0) i:3
> _1 _3 _2 0 3 1 2
>   #.@|. :(#. |.)"1 (|.@#: , * * <&0)"0 i:3
> _3 _2 _1 0 1 2 3
>   2 p.~ (|.@#: , * * <&0)"0 i:3
> _3 _2 _1 0 1 2 3
>
>
> --
> Raul
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to