From: ···············@free.fr
Subject: Where is SIOD-1.0 ?
Date: 
Message-ID: <1149363386.979939.149700@i40g2000cwc.googlegroups.com>
 Hi !

 Please have you got, somewhere on your hard drive, the George Carette
SIOD initial version of 1988 - to study its C code - ?
Was unable to locate it with google.

Thanks.

Fabrice

From: ···············@free.fr
Subject: Re: Where is SIOD-1.0 ?
Date: 
Message-ID: <1149372505.508421.230090@j55g2000cwa.googlegroups.com>
Here is the original message of George Carrette :
http://groups.google.fr/group/comp.lang.scheme/browse_frm/thread/5bc30eaee19b4a27/439bb98d65d0141d?q=SIOD&rnum=356#439bb98d65d0141d
->
"The current version is available by anonymous ftp from bu-it.bu.edu in
/pub/siod.c"

Was not able to access this URL. But this is a 1988 message...
From: Rob Warnock
Subject: Re: Where is SIOD-1.0 ?
Date: 
Message-ID: <NLqdnSiCqca0qx_ZnZ2dnUVZ_tOdnZ2d@speakeasy.net>
<···············@free.fr> wrote:
+---------------
| Please have you got, somewhere on your hard drive, the George Carette
| SIOD initial version of 1988 - to study its C code - ?
| Was unable to locate it with google.
+---------------

Well, Release 1.3 is only one week later than Release 1.0,
and there's a *badly*-reformatted version of Release 1.3 at
<http://infoshako.sk.tsukuba.ac.jp/ShakoDoc/AI/SIOD/siod.c>  ;-}
[and <http://infoshako.sk.tsukuba.ac.jp/ShakoDoc/AI/SIOD/siod.scm>,
which you'll also need]. I can send you an original "siod.1.3.c",
if you like, but I don't have the matching "siod.scm" myself.
However...

- You're not going to learn much new from looking at anything
  earlier than 1.3, since 1.3 is the first one that says
  "define now works properly". (!!)

- You're not going to learn much new from looking at 1.3
  that you wouldn't learn from a somewhat later, more featureful
  version such as 2.7 [May 1992] or even 3.4 [May 1997].

- Versions 1.0-1.3 had restrictive copyrights; 1.4 and later
  had a BSD/MIT-style copyright -- much more liberal!

Given all that, if you're really into technoarchaeology my suggestion
would be to go with Release 1.4 [Nov 1989], available here:

    http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/impl/siod/siod_14.tgz

That's the first one that was split into "slib.c" core library
and an "siod.c" driver/main program [as all the later ones were],
yet it's still *very* close to the original [I just did a "gdiff"].


-Rob

p.s. Other versions all the way up to 3.0 are also available
in the CMU repository.

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: ···············@free.fr
Subject: Re: Where is SIOD-1.0 ?
Date: 
Message-ID: <1149459972.633040.90830@j55g2000cwa.googlegroups.com>
Thank you Rob for the links and interesting comments.

> Well, Release 1.3 is only one week later than Release 1.0,
> and there's a *badly*-reformatted version of Release 1.3 at
> <http://infoshako.sk.tsukuba.ac.jp/ShakoDoc/AI/SIOD/siod.c>  ;-}
> [and <http://infoshako.sk.tsukuba.ac.jp/ShakoDoc/AI/SIOD/siod.scm>,
> which you'll also need].
(snip)
>  my suggestion would be to go with Release 1.4 [Nov 1989], available here:
>  http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/imp...
 It was the best - oldest - version I was able to locate.
Glad to see Release 1.3 !

>  I can send you an original "siod.1.3.c",
I'm interested with this, thanks !
fabrice no dot marchant at free dot fr

>- You're not going to learn much new from looking at anything
>  earlier than 1.3, since 1.3 is the first one that says
>  "define now works properly". (!!)
That sounds very bad indeed.

>- You're not going to learn much new from looking at 1.3
>  that you wouldn't learn from a somewhat later, more featureful
>  version such as 2.7 [May 1992] or even 3.4 [May 1997].
I think : older -> simpler -> easier to study and understand !
The reason I was interested in 1.0 is it doesn't implement macro.
So I hoped the sources are lighter.

>- Versions 1.0-1.3 had restrictive copyrights;
Seen that : "For demonstration only".

> Given all that, if you're really into technoarchaeology
I own a HP 9830B and repaired a TRS80 last year.
  Maybe with the 2000 vacuum tubes of my collection, will build
something interesting...
From: Rob Warnock
Subject: Re: Where is SIOD-1.0 ?
Date: 
Message-ID: <apadndqMSpcVDR7ZnZ2dneKdnZydnZ2d@speakeasy.net>
<···············@free.fr> wrote:
+---------------
| >  I can send you an original "siod.1.3.c",
| I'm interested with this, thanks !
+---------------

[Done.]

+---------------
| >- You're not going to learn much new from looking at anything
| >  earlier than 1.3, since 1.3 is the first one that says
| >  "define now works properly". (!!)
| That sounds very bad indeed.
+---------------

Why "bad"?!? SIOD 1.0 was a one-afternoon hack, as the documentation
is quite explicit about:

    http://people.delphiforums.com/gjc/siod.html#apology
    Apology, discussion and motivation
    ...
    Defining and executing fib resulted in a code-coverage of over
    95% of the lines of the C program. Hence, SIOD, Scheme in One Day.

I see nothing wrong in taking only a week more to make DEFINE "work
properly".

+---------------
| >- You're not going to learn much new from looking at 1.3
| >  that you wouldn't learn from a somewhat later, more featureful
| >  version such as 2.7 [May 1992] or even 3.4 [May 1997].
| I think : older -> simpler -> easier to study and understand !
| The reason I was interested in 1.0 is it doesn't implement macro.
| So I hoped the sources are lighter.
+---------------

Given that the source says that macros [and LOAD, and predicates!]
were added in 1.1, just one *day* later than 1.0, my guess is that
1.0 is practically useless, except for running his initial FIB demo.

Look, macros are practically trivial to implement, yet without them
it's a horrible pain to implement the *rest* of the language. No Lisp
or Scheme without them is "real".

Specifically, in SIOD 1.3 the implementation of macros is a 4-line hack
in EVAL, namely, if the value of a variable in function position of a
form is itself a *symbol* [rather than a function], then EVAL assumes
that that symbol names a macro function, calls it with the form, and
then loops to re-evaluate the result[*]:

    ...
    case tc_cons:
      tmp = leval(CAR(x),env);
      switch TYPE(tmp) {
	 ...[all the other usual cases]...
[*]==>	 case tc_symbol:
[*]==>	   x = cons(tmp,cons(cons(sym_quote,cons(x,NIL)),NIL));
[*]==>	   x = leval(x,NIL);
[*]==>	   goto loop;
	 default:
	   err("bad function",tmp);}
    ...

That's it. Really. Out of the total of 1147 lines of source code,
those 4 are all it took to implement macros [at least, the kind
that SIOD has].


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: ···············@free.fr
Subject: Re: Where is SIOD-1.0 ?
Date: 
Message-ID: <1149550327.530273.325320@u72g2000cwu.googlegroups.com>
> | >  I can send you an original "siod.1.3.c",
It was useful, amiga Release differs. Thanks.


> | >- You're not going to learn much new from looking at anything
> | >  earlier than 1.3, since 1.3 is the first one that says
> | >  "define now works properly". (!!)
> | That sounds very bad indeed.
> +---------------
>
> Why "bad"?!? SIOD 1.0 was a one-afternoon hack, as the documentation
> is quite explicit about:
>
>     http://people.delphiforums.com/gjc/siod.html#apology
>     Apology, discussion and motivation
>     ...
>     Defining and executing fib resulted in a code-coverage of over
>     95% of the lines of the C program. Hence, SIOD, Scheme in One Day.
>
> I see nothing wrong in taking only a week more to make DEFINE "work
> properly".

 I have admiration for people like Mister Carrette that was able to
produce such beautiful things like SIOD and share them with other.
  When I said : "It sounds very bad !" I mean it maybe was a wrong idea
for me to study such a release that contains a problem. It probably
would be impossible for a LISP beginner to learn how things work if
they do not properly.

> Given that the source says that macros [and LOAD, and predicates!]
> were added in 1.1, just one *day* later than 1.0, my guess is that
> 1.0 is practically useless, except for running his initial FIB demo.

OK for macros : 4 lines on 1100 is few indeed. But must evaluate LOAD
and predicates implementation size too.
 Moreover we can expect that the number of functions in initial release
is smaller.

Otherwise, I noticed the "alternative syntax" of your interesting
document :

http://people.delphiforums.com/gjc/siod.html#hello.scm

LISP with few parenthesis. It makes me remember about Chaitin LISP :
http://www.cs.auckland.ac.nz/CDMTCS/chaitin/lisp.html