jcl@deshaw.com (Jonathan Laventhol) writes:
Hello Jonathan
> A little history lesson for those on the net.
>
> There was a Pop1 but I don't know anything about it.
>
> Pop2 was a programming language developed at the University of
> Edinburgh (which is in SCOTLAND).
>
> The 'POP' of Pop11, Poplog et cetera, is a Robin Popplestone,
> who, last I knew, was working in a university in Boston. I
> never asked him why it's not called Burst11, but there you go.
> The best original paper is 'The Design Philosophy of Pop2' (if
> I remember the title correctly), by Popplestone.
>
> There was no Pop3 to Pop10, to the best of my knowledge.
Pop10 was implemented for the PDP10 in Edinburgh by Julian
Davies and was used there and in various other places including
Toronto I think, for several years in the mid 70s.
> A Pop implementation at the University of Sussex (which is in
> ENGLAND) was called Pop11 after the PDP-11 it ran on.
It was implemented by Steve Hardy, now somewhere in California. He
called it Pop-11 because the PDP10 version had been called Pop10
> A better snippet:
> define recursivemember(item, list);
> var item, list, element;
> if list = [] then
> return(false)
> endif;
>
> for el in list do
> if el = item then
> return(true)
> elseif islist(el) then
> return(recursivemember(item, el));
> endif
> endfor;
>
> return(false);
> enddefine;
OOPS! You've been away from it a bit too long.
define recursivemember(item, list);
lvars item, list, el;
for el in list do
if el = item then
return(true)
elseif islist(el) and recursivemember(item, el) then
return(true)
endif
endfor;
return(false);
enddefine;
recursivemember("cat", [[the dog][a silly [black cat]] mouse]) =>
** <true>
recursivemember("mouse", [[the dog][a silly [black cat]] mouse]) =>
** <true>
recursivemember("dog", [[the dog][a silly [black cat]] mouse]) =>
** <true>
recursivemember("house", [[the dog][a silly [black cat]] mouse]) =>
** <false>
Pop2, Pop10, ALPHAPOP (the Mac version), the PDP11 version of Pop-11
and early Poplog Pop-11 up to about 1984(?) had only dynamically
scoped variables ("vars"), like early lisp systems. From about 1984
Poplog Pop-11 had both dynamic scoping and lexical scoping of
variables ("lvars").
--
Aaron Sloman, School of Computer Science,
The University of Birmingham, B15 2TT, England
EMAIL A.Sloman@cs.bham.ac.uk OR A.Sloman@bham.ac.uk
Phone: +44-(0)21-414-3711 Fax: +44-(0)21-414-4281
|