Re: [Haskell-cafe] Hyper-recursion?

If I may step into this discussion, I'd like to suggest you start modelling your world of parcels more concretely, as data types. From there it should be easier to grasp our hyper-recursion. Question: Does every parcel have its own time, or is there a universal clock ticking in the background? If you have a uiversal clock, you could model your world as a linear series of state changes, stretching infinitely into the past and future. Hence two streams going out form a "now" would be the overarching data type. This has been used e.g. for doubly linked lists. Doesn't functional reactive programming use a similar model? Question: How does one identify a parcel of land? Is it a polygon of coordinates in some reference system? Hence can the state be seen as a finite set of (Polygon,Owner) pairs? Question: What is more important: The state or the state change? If the state is more important, a kind of graph might be the appropriate data structure. If the change is important, it might be interesting to model the world (and time) as a network of functions. Question to all mathematicians on this list: Suppose (again assuming a universal clock) there is a type (a set?) X and a function change :: Integer -> (X -> X) where the state of "now" is to be understood as the value now = change 0 . change (-1) . change (-2) . {...ad infinitum} Under which circumstances does this determine the value of "now"? The only instance I can think of are contractions on a (compact) metric space. (Brouwer's/Banach's fixed point theorems) I second the contributors who suggest that this has not much to do with recursion nor corecursion. To me, the essence of recusion is self-reference. A function building e.g. an infinite stream from a seed is not self-referential in itself, it is the resulting data that is self-referential. Olaf

I guess I'm using a looser definition of recursion, something not exactly
"self-referential." For example, I'm on the phone with someone, and then I
accept a call-waiting call. You can go into multiple depths of call
waiting, then wind your way back out as you hang up on each -- all the way
back to the original caller. Or, with my example, I could have a state
represented as some polynomial, a_nx^n + a_n-1x^(n-1) + . . ., then a
"change" happens when a new polynomial "goes into" the first,
a_n(b_ny^n + b_n-1y^n-1 + ...)^n + a_n-1x^n-1 ...
This could go on and on, new polynomials substituted into one of the
variables of the previous. All I want to say with this is that I consider
this also recursive in nature, even though I can't imagine how this would
be "self-referential" or looking typically inductive.
I'm not a expert on the whole Bitcoin blockchain, but your (Olaf)
now = change 0 . change (-1) . change (-2) . {...ad infinitum}
looks like one. And no, there shouldn't be a clock, per se. Yes, parcels
would be polygons, with sides shared -- although this isn't germane to the
bigger question.
On Tue, Jan 17, 2017 at 3:14 PM, Olaf Klinke
If I may step into this discussion, I'd like to suggest you start modelling your world of parcels more concretely, as data types. From there it should be easier to grasp our hyper-recursion.
Question: Does every parcel have its own time, or is there a universal clock ticking in the background?
If you have a uiversal clock, you could model your world as a linear series of state changes, stretching infinitely into the past and future. Hence two streams going out form a "now" would be the overarching data type. This has been used e.g. for doubly linked lists. Doesn't functional reactive programming use a similar model?
Question: How does one identify a parcel of land? Is it a polygon of coordinates in some reference system? Hence can the state be seen as a finite set of (Polygon,Owner) pairs?
Question: What is more important: The state or the state change? If the state is more important, a kind of graph might be the appropriate data structure. If the change is important, it might be interesting to model the world (and time) as a network of functions.
Question to all mathematicians on this list: Suppose (again assuming a universal clock) there is a type (a set?) X and a function
change :: Integer -> (X -> X)
where the state of "now" is to be understood as the value
now = change 0 . change (-1) . change (-2) . {...ad infinitum}
Under which circumstances does this determine the value of "now"? The only instance I can think of are contractions on a (compact) metric space. (Brouwer's/Banach's fixed point theorems)
I second the contributors who suggest that this has not much to do with recursion nor corecursion. To me, the essence of recusion is self-reference. A function building e.g. an infinite stream from a seed is not self-referential in itself, it is the resulting data that is self-referential.
Olaf

Thus quoth Lawrence Bottorff at 01:11 on Wed, Jan 18 2017:
I guess I'm using a looser definition of recursion, something not exactly "self-referential." For example, I'm on the phone with someone, and then I accept a call-waiting call. You can go into multiple depths of call waiting, then wind your way back out as you hang up on each -- all the way back to the original caller.
[...]
This could go on and on, new polynomials substituted into one of the variables of the previous.
This sounds a lot like recursive (inductive/coinductive) data structures. -- Sergiu
participants (3)
-
Lawrence Bottorff
-
Olaf Klinke
-
Sergiu Ivanov