[Haskell-cafe] Criteria for determining if a recursive function
can be implemented in constant memory
sschuldenzucker at uni-bonn.de
Tue Jul 6 10:01:52 EDT 2010
On 7/5/2010 8:33 PM, Andrew Coppin wrote:
> Tillmann Rendel wrote:
>> Hi Steffen,
>> Steffen Schuldenzucker wrote:
>>> Given the definition of a recursive function f in, say, haskell,
>>> determine if f can be implemented in O(1) memory.
>> Constant functions are implementable in O(1) memory, but interpreters
>> for turing-complete languages are not, so the property of being
>> implementable in O(1) memory is non-trivial and therefore, by Rice's
>> theorem, undecidable.
> Damn Rice's theorum, spoiling everybody's fun all the time... ;-)
Definitely! Thanks, Tillmann, for this quite clear answer.
> Of course, as I understand it, all the theorum says is that no single
> algorithm can give you a yes/no answer for *every* possible case. So
> the next question is "is it decidable in any 'interesting' cases?"
> Then of course you have to go define 'interesting'...
Yes, perhaps I should reformulate my original question to something like
"What is a good algorithm for transforming an algorithm written in a
functional language to constant-memory imperative code? Which properties
must the functional version satisfy?"
(one answer would be tail-call optimization, but, as I pointed out in my
first post, I guess this isn't the whole story)
"Can you tell me an example of a set of functionally-defined algorithms
maximal in the property that there exists a single algorithm which
transforms them all into constant-memory imperative code?"
More information about the Haskell-Cafe