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]>
Yes, the Fibonacci example and its connection to laziness is old! Not sure if it’s ever been named ‘course-of-value recursion’ or its corresponding strong induction. 

> On Jan 19, 2025, at 10:15 AM, Henning Thielemann <[email protected]> wrote:
> 
> 
> On Sun, 19 Jan 2025, Vanessa McHale wrote:
> 
>> Laziness turns out to allow course-of-value recursion where one might use memoization in other languages. But I hadn’t seen this articulated!
> 
>> Famously, one can use this to define the Fibonacci numbers, viz.
>> fibs :: [Integer]
>> fibs = 1 : 1: zipWith (+) fibs (tail fibs)
> 
> This example is old and well-known, right?
> 
> 
>> Or the Catalan numbers:
>> catalan :: [Integer]
>> catalan = 1 : 1 : [ sum [ (-1)^(k+1) * (pc (n - ((k*(3*k-1)) /. 2)) + pc (n - ((k*(3*k+1))/.2))) | k <- [1..n] ] | n
>> <- [2..] ]
>>   where
>>     pc m | m >= 0 = part !! m | otherwise = 0
>>     infixl 6 /.
>>     (/.) = quot
> 
> 
> I have:
> 
> catalanNumbers :: Num a => [a]
> catalanNumbers =
>   let xs = 1 : PowerSeries.mul xs xs
>   in  xs
> 
> https://hackage.haskell.org/package/combinatorial-0.1.1/docs/src/Combinatorics.html#catalanNumbers

_______________________________________________
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.