On Tue, Jan 7, 2020 at 8:24 PM Raoul Schorer <raoul.scho...@gmail.com> wrote:
> 'Is it possible to define infinite data structures and operate on them in
> J?'

There are an infinity of infinities and any useful approach at
representing infinities can only handle a finite subset.

> For example, take the first ten elements of an infinite list, as in Haskell.
> The 'F.' primitive family seems promising indeed.

You can think of J's i. (when used without a left argument) as
representing an infinite list and its right argument as specifying how
much of that infinite list you want. And, you can use functions
incorporating i. to extend the possibilities.

That said, Haskell is (in this context) more LISP like: with a bias
towards micro-recursions and a bias away from numeric representations
of size. J can indeed emulate that, but performance tends to suffer if
or when you don't understand how to map the micro-recursions onto
arithmetic. (Or, more simply: Haskell is a better Haskell than J is.)

Does this help?

Thanks,

-- 
Raul


>
> Le mer. 8 janv. 2020 à 01:56, Henry Rich <henryhr...@gmail.com> a écrit :
>
> > I don't understand the task at all.  You might look in NuVoc for $:, F.
> > etc., and M.
> >
> > Henry Rich
> >
> > On 1/7/2020 7:51 PM, Raoul Schorer wrote:
> > > Hi,
> > >
> > > Implementing  Minikanren <http://minikanren.org/> in J by translating
> > from
> > > Scheme, I stumbled on the following:
> > > I have a Scheme procedure 'fives'
> > > <
> > https://github.com/jasonhemann/microKanren/blob/master/microKanren-test-programs.scm
> > >
> > > that is passed a vector and yields a procedure that then takes a pair.
> > > ((fives (vector 0)) '(() . 0))
> > >
> > > My problem is that this then evaluates to a pair data -- procedure:
> > > ((((#(0) . 5)) . 0) . #<procedure at microKanren-test-programs.scm:677>)
> > >
> > > The second member of the pair (the procedure) is then evaluated on demand
> > > to yield another similar structure of length n+1, therefore allowing the
> > > lazy evaluation of this infinite "stream".
> > >
> > > Is switching to iterative/eager eval the only realistic way?
> > > Can someone help me with lazy eval of infinite structures in J, or give
> > me
> > > pointers to resources on the topic?
> > >
> > > Thanks!
> > > Raoul Schorer
> > > ----------------------------------------------------------------------
> > > 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