I have not yet learned Haskell well enough to answer your "something
beautiful" question, but I am learning it for work, so I may be able to
answer it in the not-too-distant future.


On Fri, May 9, 2014 at 1:35 PM, Roger Hui <[email protected]> wrote:

> Yes.  You can look at p: as an infinite sequence (series).  Also t. and t:
>
>    p: i.10
> 2 3 5 7 11 13 17 19 23 29
>    p: 1e6 2e6 3e6
> 15485867 32452867 49979693
>
>    ^ t. i.10
> 1 1 0.5 0.166667 0.0416667 0.00833333 0.00138889 0.000198413 2.48016e_5
> 2.75573e_6
>    ^ t. i.10x
> 1 1 1r2 1r6 1r24 1r120 1r720 1r5040 1r40320 1r362880
>
>    1&o. t: i.10
> 0 1 0 _1 0 1 0 _1 0 1
>
> Can Haskell say this?  +/(1+⍳∞)*-s ←→ ×/÷1-(⍭⍳∞)*-s , equivalent to
> +/(1+i._)^-s and */%1-(p:i._)^-s, from Bring Something
> Beautiful<http://archive.vector.org.uk/art10500390>
> .
>
>
>
>
> On Fri, May 9, 2014 at 10:19 AM, Devon McCormick <[email protected]>
> wrote:
>
> > The Haskell language uses it to allow practical use of infinite series:
> > only the necessary values are calculated when items are selected from
> such
> > a series and this is only done at the time of selection.
> >
> > This has obvious utility with the potentially very large datasets
> generated
> > by "catalog" even if they are not infinite.
> >
> >
> > On Fri, May 9, 2014 at 1:06 PM, Roger Hui <[email protected]>
> > wrote:
> >
> > > "Lazy evaluation" ←→ composition with algebraic simplification.
> > >
> > >
> > > On Fri, May 9, 2014 at 10:01 AM, Devon McCormick <[email protected]>
> > > wrote:
> > >
> > > > If there was ever a a candidate for "lazy evaluation", "catalog"
> would
> > be
> > > > it.
> > > >
> > > >
> > > >
> > > > On Fri, May 9, 2014 at 1:00 PM, Devon McCormick <[email protected]>
> > > > wrote:
> > > >
> > > > > I've used "catalog" in real-world apps but, as Dan indicates, it
> was
> > > with
> > > > > arguments that gave fairly small results.
> > > > >
> > > > >
> > > > >
> > > > > On Thu, May 8, 2014 at 8:30 PM, 'Pascal Jasmin' via Programming <
> > > > > [email protected]> wrote:
> > > > >
> > > > >> > one reason for its rarity is, at least, that in any real-world
> > > > context,
> > > > >> a complete MxN catalog would be prohibitively expensive
> > > > >>
> > > > >> its very cheap compared to A. and filtering permutations after
> > you've
> > > > >> generated them.  In the resource matching application I linked to,
> > > > where 1
> > > > >> user ends up with 1 resource, its also possible to prefilter the
> > > > arguments
> > > > >> to catalogue removing options where forced choices exist, and thus
> > > > >> significantly reducing an exponential algorithm to allow solutions
> > to
> > > > >> moderately large problem spaces.
> > > > >>
> > > > >> Its fast compared to backtracking loop solutions in other
> languages
> > > even
> > > > >> when they abort after finding first valid set of matches.  It
> seems
> > > > like a
> > > > >> very clean J way of approaching fairly hard problems.  Polynomial
> > and
> > > > >> higher problems benefit from strategies that reduce search space.
> > > > >>
> > > > >> Using catalogue to analyze n moves with an average x possibilities
> > per
> > > > >> move has an expensive x ^ n search space.  But reducing any move
> > > > >> possibility to 1 reduces both average x, and reduces n by 1
> > > > >>
> > > > >>
> > > > >> ----- Original Message -----
> > > > >> From: Dan Bron <[email protected]>
> > > > >> To: "[email protected]" <[email protected]>
> > > > >> Cc:
> > > > >> Sent: Thursday, May 8, 2014 6:39:14 PM
> > > > >> Subject: Re: [Jprogramming] a cool permutation verb
> > > > >>
> > > > >> I don't see catalog used frequently in natural J code. It does
> come
> > up
> > > > on
> > > > >> these Forums from time to time, mostly in contrived situations. In
> > my
> > > > own
> > > > >> code, I sometimes use it to generate J sentences in order to
> compare
> > > > >> performance statistics for semantically-equivalent phrases. But
> > > outside
> > > > of
> > > > >> that, I don't see it too often. I suspect one reason for its
> rarity
> > > is,
> > > > at
> > > > >> least, that in any real-world context, a complete MxN catalog
> would
> > be
> > > > >> prohibitively expensive.
> > > > >>
> > > > >> So it's unsurprising that APL didn't have a primitive catalog
> > > function.
> > > > >> Of course, you could express it as {jot} {dot} {comma}, dot as
> being
> > > > outer
> > > > >> product (and jot in this context a placeholder, not unlike [:)
> with
> > > the
> > > > >> usual caveats about the differences between J's rank and APL's
> > > > >> multidimensionality (ie you could expect catalog to work for 1D
> > > vectors
> > > > in
> > > > >> APL and generalized lists in J).
> > > > >>
> > > > >> So, when he got his chance to "rationalize" APL and rebuild it
> from
> > > > >> the ground up as J, did Ken have a change of heart about catalog's
> > > > >> centrality to the discipline of computer science? Is that why he
> > > > assigned
> > > > >> to it that scarce and desirable resource, a primitive spelling? A
> > > > >> one-character primitive, no less?
> > > > >>
> > > > >> I suspect not. Recall the other valence of {, to wit: from. You
> > might
> > > > >> think having this kind of partner is an even greater endorsement
> of
> > > > >> catalog's virtues ... until you realize:
> > > > >>
> > > > >>    row_2n3n6_col_7n13 =: 2 3 6 ; 7 13
> > > > >>    table =: i. 10 20
> > > > >>
> > > > >>    (< row_2n3n6_col_7n13) { table NB. "from"
> > > > >> 47  53
> > > > >> 67  73
> > > > >> 127 133
> > > > >>
> > > > >>    ({ row_2n3n6_col_7n13)         NB. "catalog"
> > > > >> +---+----+
> > > > >> |2 7|2 13|
> > > > >> +---+----+
> > > > >> |3 7|3 13|
> > > > >> +---+----+
> > > > >> |6 7|6 13|
> > > > >> +---+----+
> > > > >>
> > > > >>    ({ row_2n3n6_col_7n13) { table NB. "catalog from"
> > > > >> 47  53
> > > > >> 67  73
> > > > >> 127 133
> > > > >>
> > > > >> Ah, "from" *is* "catalog". Catalog is a primitive because from
> > needed
> > > a
> > > > >> thematically related definition for monad { (and from, of course,
> > >  got a
> > > > >> precious one-character primitive because it *is* central to array
> > > > >> programming). And, incidentally, this is why the results of
> catalog
> > > are
> > > > >> boxed, even though they don't need to be, and we end up writing
> >@:{
> > > > >> instead of plain { every time we use it.
> > > > >>
> > > > >> That is, by definition, the results of { will be homogenous in
> both
> > > type
> > > > >> and shape, and so we know for certain boxes aren't required ...
> > except
> > > > that
> > > > >> dyad { has a scalar left rank, and so to completely address an
> atom
> > > (or
> > > > >> anything more granular than an item, ie a Cartesian point in the
> > frame
> > > > >> specified as a vector of indices, one per axis), each selection
> must
> > > be
> > > > >> boxed.
> > > > >>
> > > > >> True story.
> > > > >>
> > > > >> -Dan
> > > > >>
> > > > >>
> > > > >>
> > > > >> Sent from my iPhone
> > > > >>
> > > > >>
> > > > >> > On May 8, 2014, at 5:34 PM, "'Pascal Jasmin' via Programming" <
> > > > >> [email protected]> wrote:
> > > > >> >
> > > > >> > Its the same.  Just more descriptive name than catalogue
> perhaps.
> > > > >> Google seems to only find J references to query "catalogue
> function
> > > > >> permutations".  I feel as though catalogue and my use of it is a
> > > > >> generalizable pattern, and the J designers agreed, but I don't
> know
> > if
> > > > >> other languages did something similar, and just used a different
> > name?
> > > > >> >
> > > > >> > Was catalogue in APL?
> > > > >> >
> > > > >> >
> > > > >> > ----- Original Message -----
> > > > >> > From: David Lambert <[email protected]>
> > > > >> > To: programming <[email protected]>
> > > > >> > Cc:
> > > > >> > Sent: Thursday, May 8, 2014 4:50:40 PM
> > > > >> > Subject: Re: [Jprogramming] a cool permutation verb
> > > > >> >
> > > > >> > Indeed cool, does it differ from ,@{ :[:
> > > > >> >> Date: Thu, 8 May 2014 10:53:53 -0700 (PDT)
> > > > >> >> From: "'Pascal Jasmin' via Programming"<
> > [email protected]>
> > > > >> >> To: Programming forum<[email protected]>
> > > > >> >> Subject: [Jprogramming] a cool permutation verb
> > > > >> >> Message-ID:
> > > > >> >>     <
> [email protected]>
> > > > >> >> Content-Type: text/plain; charset=utf-8
> > > > >> >>
> > > > >> >> cperm =: [: , [: < "1 [: > [: ,"0 1/ each/ (_2&}. , [: ,"0 0/
> > each/
> > > > >> _2&{.)
> > > > >> >>
> > > > >> >> this creates constrained permutations where each position in
> the
> > > list
> > > > >> can only be drawn from its own set:
> > > > >> >>
> > > > >> >> ? ?cperm 3 4 ; 1 2
> > > > >> >> ?????????????????
> > > > >> >> ?3 1?3 2?4 1?4 2?
> > > > >> >> ?????????????????
> > > > >> >>
> > > > >> >> ? ?cperm 0 ; 3 4 ; 1 2; 5
> > > > >> >> ?????????????????????????????????
> > > > >> >> ?0 3 1 5?0 3 2 5?0 4 1 5?0 4 2 5?
> > > > >>
> > ----------------------------------------------------------------------
> > > > >> For information about J forums see
> > > http://www.jsoftware.com/forums.htm
> > > > >>
> > > > >>
> > ----------------------------------------------------------------------
> > > > >> For information about J forums see
> > > http://www.jsoftware.com/forums.htm
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Devon McCormick, CFA
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Devon McCormick, CFA
> > > >
> ----------------------------------------------------------------------
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> >
> >
> >
> > --
> > Devon McCormick, CFA
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
Devon McCormick, CFA
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to