User loginNavigation 
The Type of a Recursive CombinatorThe latest Cat version ( 0.9.7 at http://www.catlanguage.com/download.html ) now has a linear recursion combinator "rec". The Cat type inference algorithm currently can't handle selfreferential functions, but you implement recursive algorithms using the rec combinator. Here is an example of the factorial program: >> define f { [dup 1 <=] [*] [pop 1] [dup ] rec } inferred type for program 'f' as ( int ) > ( int ) main stack: _empty_ >> 5 f main stack: 120 >> 6 f main stack: 120 720 The type of the rec combinator is interesting (at least I thought so): ( (A:any*)>(A A) // argument relation (A)>(B:any*) // termination function (A B)>(B) // result relation (A)>(bool A) // termination condition A // input )>(B) I was wondering what people's thoughts were about the rec combinator? For example is it in fact interesting or novel to see the types explicitly stated for each component of linear recursion? Do you think there might be some educational value for students to have recursion explained in terms of arguments to a combinator? Any feedback would be very helpful, thanks in advance! Note: those familiar with Cat will notice that stack descriptions now read left to right, where the leftmost type corresponds to the top of the stack. By cdiggins at 20061108 17:25  LtU Forum  previous forum topic  next forum topic  other blogs  4082 reads

Browse archivesActive forum topics 
Recent comments
9 min 28 sec ago
4 hours 15 min ago
5 hours 14 min ago
6 hours 41 min ago
6 hours 53 min ago
7 hours 45 min ago
9 hours 20 min ago
10 hours 55 min ago
11 hours 12 min ago
17 hours 32 min ago