Haskell's lazy evaluation also offers significant opportunities for partial compile time (aka "eager") evaluation of expressions, which tends to result in blazing fast run-time (since the calculations were already completed, or to some degree).
The downside has to do with debugging in some of the remaining cases. But people experienced with a language tend to learn to avoid many of its pain points. Thanks, -- Raul On Wed, Jan 8, 2020 at 1:32 PM Vanessa McHale <vamch...@gmail.com> wrote: > > Haskell’s lazy evaluation is also more complex than it might seem at first > glance: it’s not quite the same as non-strictness, and in particular in a > proper lazy language various data structures are more efficient due to > caching &c. > > Cheers, > Vanessa > > > On Jan 8, 2020, at 12:28 PM, Raul Miller <rauldmil...@gmail.com> wrote: > > > > On Tue, Jan 7, 2020 at 8:24 PM Raoul Schorer <raoul.scho...@gmail.com > > <mailto: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 > > <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