a universal printer for Haskell?
Ch. A. Herrmann
Tue, 19 Feb 2002 12:20:04 +0100
>>>>> "Bernard" == Bernard James POPE <email@example.com.OZ.AU> writes:
Bernard> Handling functions is always going to be hard. Actually, a
Bernard> related issue in Haskell is what do you do with partially
Bernard> evaluated structures? Certainly in some circumstances you
Bernard> don't want to force the value just so that you can write it
sorry if I wasn't precise enough. I don't want to force ANY evaluation
on the value to be marshalled; in some cases the computation may even
not terminate! Instead, the string is an encoding of the smallest
part of the heap that is necessary to restore the information.
My aim is to save a state which contains unevaluated closures to
disk and resume the computation at a later time or to send a state
to a remote location. The nice property of a functional language,
in contrast to imperative languages, is that you can make a snapshot
of your computation without any support by the runtime environment if,
of course, those (un)marshalling functions are available.
Bernard> If you compiled to byte code, life would be a lot
Bernard> easier, however everything will get a lot messier if you
Bernard> want to mix machine code and byte code. urgh...
The problem is to encode program functions, not just functions that arise during
the computation. Compiling to byte code is a different issue.
Bernard> It would be nice if you could write out some data to file from
Bernard> GHC and then read it in using NHC :)
That'll be very complicated and require a deep discussion about an
Bernard> I think Clean has a prototype persistence mechanism, I saw
Bernard> a short demo late last year. I'm not sure how they
Bernard> represent functional values. I think you can only read the
Bernard> data from within the same program that wrote the data.
That would be OK for me. It would even be OK if it is the same binary,
i.e., not to be used in heterogeneous networks. Anyway, I don't
like to change my favourite programming language unless it's better
than Haskell and that'll be very likely Haskell-II :-)