Re: Course-of-value recursion by defining a sequence as a self-referential infinite list

Vanessa McHale <[email protected]>
Newsgroups gmane.comp.lang.haskell.cafe
Message-ID <[email protected]>
I came up with a one-liner for computing coefficients of the generating function for integer partitions:

part :: Int → [Integer ]
part n = take n $ product [cycle (1 : replicate n 0) | n ← [0 . . (n − 2)]]

Karczmarczuk’s solution via the Haskell prelude:

part = 1 : b 1
  where b n = (1 : b (n + 1)) + (replicate n 0 ++ b n)

cycle and replicate are really underrated!

> On Jan 20, 2025, at 8:54 AM, Douglas McIlroy <[email protected]> wrote:
> 
> > catalanNumbers :: Num a => [a]
> > catalanNumbers =
> >   let xs = 1 : PowerSeries.mul xs xs
> >   in  xs
> 
> This example of a generating function come to life as a program deserves to be better known. Bill Burge presented it 50 years ago in "Recursive Programming Techniques", Addison-Wesley, 1975. I revisited it in "Power series, power serious", JFP 9 (1999) 323-335, where, with overloadied arithmetic, it became
>       ts = 1 : ts^2
> The technique is laid bare in ten one-liners at https://www.cs.dartmouth.edu/~doug/powser.html.
> 
> Doug
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.