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