> The scope of J seems to be very constrained to mathematics.
> It would be nice to use J as a system programming language!
> Are there any examples of people doing these things?

What are the requirements of a system programming language these days?  In
the old days (and my age is showing :-), it means assembler and/or machine
language manipulations.

The following are a few examples of using J.

   - Sudoku <http://www.jsoftware.com/jwiki/Essays/Sudoku>
   - N Queens 
Problem<http://www.jsoftware.com/jwiki/Essays/N%20Queens%20Problem>
   - Queens and
Knights<http://www.jsoftware.com/jwiki/Essays/Queens%20and%20Knights>
   - Knight's Tour <http://www.jsoftware.com/jwiki/Essays/Knight%27s%20Tour>
   - Set Game <http://www.jsoftware.com/jwiki/Essays/Set%20Game>
   - The Monty Hall
Problem<http://www.jsoftware.com/jwiki/Essays/The%20Monty%20Hall%20Problem>

Whether or not you consider these to be constrained by mathematics, it
would be interesting to compare a solution in another language to the J
solution.



On Sat, Feb 15, 2014 at 9:04 AM, Lee Fallat <ircsurfe...@gmail.com> wrote:

> Thanks for the explanation Raul.
>
> I think I understand now that string manipulation in J is
> non-trivial...I was following right up until the very last J sentence
> ( 'hi',:&.(-&(a.i.'*'))&.(a.&i.)'there'), mostly because I still only
> know a few verbs. I am starting to think J is either not for me, or my
> way of thinking really needs to change for this language. There are so
> many things that would seem straight forward in traditional languages
> than J, but I will have to see!
>
> Some examples of what I'm thinking of would be difficult or different in J:
> Passing 3 or more parameters to a verb
> Turning a vector into a list of arguments
> ...loops? From what I've seen loops are built into some verbs (+/ -/
> etc), but what if you wanted to do say: add every number in the
> vector, but for every number add 2.91, then divide that by 0.4?
> In python:
> range() generates a list of numbers from 0 to 9.
> for x in range(0,10)
>     y += (x + 2.91) / 0.4
> One other thing is interacting with the operating system...How do I
> check to see if files, or even directories exist? Can you create
> directories, or change permissions of files with J? The scope of J
> seems to be very constrained to mathematics. It would be nice to use J
> as a system programming language! Are there any examples of people
> doing these things?
>
> Anyways, I apologize for being off-topic, but just some things I've
> been thinking about. Like I said I still have to get through some more
> learning material.
>
> Regards,
>
> Lee
>
>
>
> On Sat, Feb 15, 2014 at 11:37 AM, Raul Miller <rauldmil...@gmail.com>
> wrote:
> > Conceptually speaking, J has three "atomic data types":
> >
> > Numeric
> > Literal
> > Boxed
> >
> > Numeric types support arithmetic: 1+1
> > Literal types are what might be called character types in other
> languages.
> > (ascii or unicode)
> > Boxed types are what might be called reference types in other languages.
> >
> > J tries to treat numeric types as mathematical arithmetic entities. It's
> > not perfect, and involves tradeoffs but it does a pretty good job at
> being
> > useful and educational while still offering decent performance with a
> > relatively compact implementation. Also, J booleans are numeric and I
> > vastly prefer this approach (which fits my understanding of the history
> of
> > booleans) over the convention of enshrining arbitrary implementation
> > limitations.
> >
> > You cannot perform arithmetic directly on literals but you can, for
> > example, compare an ascii 'A' with a unicode 'A' and get a literally
> > correct answer. (However, unicode also includes an open ended set of
> rules
> > and extensions and if you want those you will probably need to implement
> > them yourself. To avoid open-ended arguments about these issues its
> perhaps
> > better to refer to this type of data as 'literal' rather than
> 'character'.)
> >
> > Boxes take an arbitrary array and "puts it in a box" - you get a single
> > thing which can be treated something like a literal or a number.
> >
> > You cannot mix these three types in the same array, but if you put
> > something in a box you can put the box in an array of boxes.
> >
> > Anyways...
> >
> > For some contexts you might use a list of characters (excuse me: I mean
> > literals) to represent a string. For other contexts you might want to put
> > that list of characters in a box. If you arrange your strings as a two
> > dimensional array they will all be padded (with spaces) to match the
> length
> > of the longest one.
> >
> > Actually, in some contexts you might want to use a list of numbers to
> > represent a string. Sometimes arithmetic is handy.
> >
> > Put differently, J does not actually have a "string" data type. But you
> can
> > represent them using arrays.
> >
> > Examples:
> >
> >    'hello'
> > hello
> >    'hello';'there'
> > ┌─────┬─────┐
> > │hello│there│
> > └─────┴─────┘
> >    'hi',:'there'
> > hi
> > there
> >    'hi',:&.(-&(a.i.'*'))&.(a.&i.)'there'
> > hi***
> > there
> >
> > In that last example, I made the padding character by '*' rather than '
> '.
> > I did this by combining the two strings as numbers rather than literals.
> > The padding value for numbers is zero. But if I had stopped  there I
> would
> > have gotten ascii nulls for my padding. So I also combined them under
> > subtracting by the numeric value for '*'.
> >
> > Under performs the reverse transform for the result (of the transform
> that
> > it performed from the arguments),
> > http://www.jsoftware.com/jwiki/Essays/Under
> >
> > I hope this makes sense.
> >
> > Thanks,
> >
> > --
> > Raul
> >
> > On Sat, Feb 15, 2014 at 10:31 AM, Lee Fallat <ircsurfe...@gmail.com>
> wrote:
> >
> >> Thank you all for your kind replies! And to those saying how I should
> >> really use awk for this job- I know, I was just curious! I am very
> >> impressed by the variance in answers, and how different J really is
> >> compared to other languages.
> >>
> >> Thanks again,
> >>
> >> Lee
> >>
> >> P.S. As for the input, just numbers was fine. I'm curious though what
> >> J does when it encounters strings (and numbers!). I figured reading
> >> through the books offered on the wiki will explain this. (+/ "hello"
> >> "world" 100 = what? :)
> >>
> >> On Sat, Feb 15, 2014 at 10:20 AM, Jim Russell <jimsruss...@yahoo.com>
> >> wrote:
> >> > I love AWK; it (and perl) have saved my bacon many times. If your
> >> problem involves processing fields within lines of an I/O stream in a
> *nix
> >> environment, of course you or I should use AWK. Particularly me, since
> I'd
> >> never be given a processing task involving more math than a "gozinta" or
> >> takeaway, much less anything involving polynomials, natural logs, verb
> >> inverses, factorials, ranks above 3, and a whole bunch of stuff that J
> >> would do for me if only I understood what it was.
> >> >
> >> > (I would also pick AWK if I had only 5 minutes to learn a new
> language.)
> >> >
> >> > But had AWK never been invented (shudder), and I needed to write it,
> >> would I use J? Well, not me, but I know some folks here that might
> knock it
> >> out using J in an afternoon or two.
> >> >
> >> >> On Feb 14, 2014, at 9:51 PM, Lee Fallat <ircsurfe...@gmail.com>
> wrote:
> >> >>
> >> >> Hey there,
> >> >>
> >> >> As new user to J (but several years experience with C and Java), I
> >> >> find it very, very interesting. The power of its one liners and
> >> >> mathematical heritage really have me hooked.  I was wondering though
> >> >> if it has similar capabilities as awk. What's the equivalent to this
> >> >> awk script in J?:
> >> >>
> >> >> BEGIN { FS=";" }
> >> >> { print $1+$2 }
> >> >>
> >> >> This script sets a FieldSeparator to ;, and then for every "row", add
> >> >> the first and second column and prints it. I would like to replace
> awk
> >> >> with J!
> >> >>
> >> >> Thank you,
> >> >>
> >> >> Lee
> >> >>
> >> >> P.S. Excuse me if I've misidentified J sentences. (Sentences ->
> >> statements?)
> >> >>
> ----------------------------------------------------------------------
> >> >> 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
> >>
> > ----------------------------------------------------------------------
> > 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