On Sat, 2002-06-29 at 15:26, Mark Carroll wrote: > On Sat, 29 Jun 2002, Samuel E. Moelius III wrote: > (snip) > > Here's another not-exactly-what-you-wanted solution. :) > (snip) > > Do any of the experimental extensions to Haskell allow a what-he-wanted > solution? I couldn't arrange one in H98 without something having an > infinitely-recursive type signature. I'm sure it would have been easy in > Lisp, and he already gave a Perl equivalent, so I'm wondering if it could > be at all sane for Haskell to allow such stuff and if Haskell is somehow > keeping us on the straight and narrow by disallowing the exact counter > that was originally requested. > > The beauty of his request was that it was so simple and seemed to make > sense; I went ahead and tried to fulfill it before realising I couldn't > do it either.
I could not manage to do this with a simple always-increment-by-one function, but the problem of adding a number n each time was a quite a bit easier - though it still took me a while to escape the infinite recursive type , it seems that you need to indirect through another datatype (here FP). you can't print z or z', but the show defined will allow you to print out a FooPair ----- data FooPair = FP Integer (Integer -> FooPair) instance Show FooPair where show (FP i f) = "FooPair " ++ (show i) ++ "...fun..." incg :: Integer -> Integer -> FooPair incg n = \i -> let j = n+i in (FP j (incg j)) val (FP i _) = i fun (FP _ f) = f x = incg 7 -- the original function y = x 3 -- increment the current value by 3 and return the FP pair zf = fun y -- get the new function zv = val y -- and the value in the pair z' = z 99 -- now get the next value function pair ----- -- jeff putnam -- [EMAIL PROTECTED] -- http://home1.get.net/res0tm0p _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe