From M4 to Scheme (was Re: M4)

Francois-Rene Rideau rideau@ens.fr
Thu, 25 Jan 1996 19:46:53 +0000 (GMT)


(I've bounced to the list the message of Patrick that this is answering to).


> I don't think I'm setup to run the thing. What do I need ?
> Do I absolutely need Linux ?
   See the READMEs in the src/ hierarchy.
   Basically, the tools currently used
are those that are quite standard under Linux,
but as they are mostly GNU tools,
you can find them on just any platform
(though it may be messy to install).
GCC, GNU make, GNU bash, GNU m4 have been ported for sure;
zsh requires some POSIX stuff,
and won't work under DOS but perhaps under OS/2.

   as86 (the assembler currently used) is the crucial part.
Though it should be easily portable to most platform
(with some luck, out of the box),
Some LLL code adaptation may be needed to cope
with the probable incompatibility of its a.out code
outside from the Linux world.
   If it too messy to use outside of Linux,
it may be time to write an 80x86 assembler in Scheme;
we could start from the PD assembler given with Win32Forth,
and inspire selves from the not-quite-PD-one in MIT-Scheme.


> I've got OS/2 and use the Boot Manager.
> Do I need a free partition ?
> Can it be launched by the Boot Manager ?
> I guess my need for a new hard drive is more urgent than I taught.
   Tunes/i386 can boot from bare floppy,
or from Linux tools (like LILO, or LOADLIN from the DOS command prompt).
Feel free to add other booting methods.
   Tunes/OTOP is meant to eventually run over OS/2 or any modern OS.
Does OS/2 have mmap() ?
If it does, where can I safely mmap() inside (or outside) the 1GB-3GB area ?
   A cross between those the above implementations could be envisioned later.
   A free partition would be great, but shouldn't be needed;
moreover it can be emulated from a file on a DOS partition
(preferrably made of contiguous clusters).
This I believe would be the wisest solution.


> As for the documentation you've writen, it is all right considering
> the state of the project.
   :( :( :(


>>    It seems that I fell in the same traps of traditional computing
>> that I try to denounce whenever I discover one !
>>    I replaced a traditional ad-hoc tool by a much more orthogonal,
>> but still mentally impaired combination
>> of a stripped-down meta-language and an stupid assembler.
>
> The main advantage of that combination seems to be the fact that
> the syntax allows writing assembler using the standard syntax
> whenever no macros are needed.
   And that's definitely a non-advantage,
because what counts is semantics, not syntax,
so trading the former for the latter is loss-loss !
Note that by porting old TASM code,
I didn't trade anything I had,
but something I could have had that I didn't consider at the time.


>>> I have to admit that M4 is probably more efficient if one knows it well.
>>> And it's too late switch anyway.
>>    m4 is not more efficient.
>>    It is simpler, and has more powerful reflectivity
>> (but some totally unclean reflectivity and semantics).
>>    No, it's never too late to switch.
>>    I made a bad choice, and it is quite soon enough to repair.
>>    Scheme seems a far better choice, and its syntactic triviality
>> makes it very easy to read and translate into whatever the HLL might
>> become.
> 
> Yes and it seems to me that retargetability, among other things, would be
> simplified.
   Let's learn the lessons from that m4 trial,
and abstract as much as we can our implementation
from the underlying Scheme system.


>>    What implementation(s) of Scheme do you suggest we use ?
> 
> I hadn't thought about it. It doesn't seem very important since I
> don't see why we would need implementation specific features and
> performance is not crucial.
   We need some implementation specific stuff for I/O,
but that should be put apart from the main code;
having people choose their Scheme implementation
(try ftp.cs.indiana.edu:/pub/scheme-repository or ftp.inria.fr:/lang/Scheme)
will force us to program cleanlier.
MIT-Scheme, SCM, Scheme48 or elk seem the most obvious choice.
   

> I would recommend we go for one with some
> usefull debugging facility.
   I don't know how the various available implementations behave
with respect to debugging. Time will tell us.
   Eventually, we'll use Tunes-Scheme anyway !


>>> Could it be that Fare is the only one coding and understanding the
>>> code because no one else knows M4 ?
>>    It could be, but you're the first one I know who's read the sources...
> Oh. I see.
   Or at least reported to have read them.
Perhaps the other people fled in horror
after reading the first line of it ?
So sad :(


--    ,        	                                ,           _ v    ~  ^  --
-- Fare -- rideau@clipper.ens.fr -- Francois-Rene Rideau -- +)ang-Vu Ban --
--                                      '                   / .          --
Join the TUNES project for a computing system based on computing freedom !
		   TUNES is a Useful, Not Expedient System
WWW page at URL: "http://www.eleves.ens.fr:8080/home/rideau/Tunes/"