home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!usc!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!agate!doc.ic.ac.uk!uknet!news.cs.bham.ac.uk!axs
- From: axs@cs.bham.ac.uk (Aaron Sloman)
- Newsgroups: comp.lang.pop
- Subject: Re: A little Pop history
- Summary: welcome/introduction to this subject
- Message-ID: <BxqBIA.Kxq@cs.bham.ac.uk>
- Date: 14 Nov 92 23:20:34 GMT
- References: <Bxpqvt.Lq@deshaw.com>
- Sender: news@cs.bham.ac.uk
- Organization: School of Computer Science, University of Birmingham, UK
- Lines: 82
- Nntp-Posting-Host: emotsun
-
- 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
-