🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.lang.functional
5 messages
5 total messages Started by Michael Norris Thu, 20 Aug 1992 14:41
Definitions
#167
Author: Michael Norris
Date: Thu, 20 Aug 1992 14:41
23 lines
1007 bytes
A quick question.

Where can I find good definitions of the words relating to
functional programming? I could make up definitions, but I'd
rather use accepted ones and refer to the source than take
the responsibility myself with the risk of defining things
wrongly, which would be distinctly bad form.

Specifically,
	coersion
	combinator
	eager evaluation
	high-order function
	lazy evaluation
	list comprehension
	pattern matching
	polymorphic
	side-effects
	strictly functional

thanks in advance.

-Michael N.	(e-mail: michaeln@cs.uq.oz.au)
Re: Definitions
#169
Author: Mike Goodrich
Date: Thu, 20 Aug 1992 16:26
30 lines
1285 bytes
In article <9910@uqcspe.cs.uq.oz.au>, michaeln@cs.uq.oz.au (Michael Norris) writes:
|> A quick question.
|> 
|> Where can I find good definitions of the words relating to
|> functional programming? I could make up definitions, but I'd
|> rather use accepted ones and refer to the source than take
|> the responsibility myself with the risk of defining things
|> wrongly, which would be distinctly bad form.
|> 
|> Specifically,
|> 	coersion
|> 	combinator
|> 	eager evaluation
|> 	high-order function
|> 	lazy evaluation
|> 	list comprehension
|> 	pattern matching
|> 	polymorphic
|> 	side-effects
|> 	strictly functional
|> 
|> thanks in advance.
|> 
|> -Michael N.	(e-mail: michaeln@cs.uq.oz.au)

I am currently reading "Functional Programming: Practice and Theory"
by Bruce J. MacLennan and highly recommend it.


...mike
Re: Definitions
#170
Author: R.S. Nikhil
Date: Thu, 20 Aug 1992 16:26
156 lines
6575 bytes
In article <9910@uqcspe.cs.uq.oz.au>, michaeln@cs.uq.oz.au (Michael Norris) writes:
> A quick question.
> 
> Where can I find good definitions of the words relating to
> functional programming? ...
> 
> Specifically,
> 	...
> 	list comprehension
> 	...


You may be interested in the note, attached below, which I wrote recently.

Regards,

Nikhil
------------------------------------------------------------
NAME:      Rishiyur S. Nikhil
EMAIL:     nikhil@crl.dec.com
TELEPHONE: (617) 621 6639        FAX : (617) 621 6650
ADDRESS:   Digital Equipment Corporation,
           Cambridge Research Laboratory,
           One Kendall Square, Bldg. 700, Cambridge, MA 02139, USA
================================================================

	NOTES ON THE ORIGIN OF THE TERM ``LIST COMPREHENSION''
			   Rishiyur Nikhil
			    September 1991
		 (revised January 1992, August 1992)

Recently, I did a little research into the origins of the term ``list
comprehension'' (since I wanted to attribute it correctly in a book
that I am writing).  I corresponded with several people, including
Phil Wadler, Rod Burstall and John Darlington.  This is what I learned
(of course, I'd be happy to receive comments/corrections to this
account).

The term itself seems to have been coined by Phil Wadler circa
1983-1985, although the programming construct itself goes back much
further (most likely Jack Schwartz and the SETL language).

The earliest reference to the notation that I have is in the following
paper:

    ``Program Transformation and Synthesis: Present Capabilities''
    John Darlington
    Research Report No. 77/43, Dept. of Computing and Control, Imperial
    College of Science and Technology, London (also appears as
    Report No. 48, Dept. of Artificial Intelligence, U. of Edinburgh)
    September 1977

which describes a functional language called NPL, designed by Rod
Burstall and John Darlington.  The report contains the following
passage:

    ``In addition, NPL allows certain sets and logic constructs to appear
    on the right hand side, for example

        setofeven(X) <= <:x: x in X & even(x) :>

    ...

    ... NPL allows certain sets and logic constructs on the right hand side
    of equations.  The concrete syntax of these constructs is:

        setexpression ::= <:expression: generator* :>
        ...
        generator     ::= variable IN expression (range) * expression (condition)

    The NPL interpreter evaluates the list of generators in a left to right
    fashion so conditions can mention any bound variables that occur to
    their left.''

and, amusingly:

    ``The interpreter is able to run many programs written
    using these facilities, but some program written are horrendously
    inefficient while others are not runnable as they stand.''

In that report, Darlington also goes on to show how to implement these
expressions by transformation (similar to the translation shown by
Wadler in Peyton Jones' book [Ch. 7, The Implementation of Functional
Languages, Simon L. Peyton Jones, Prentice Hall 1987]).

The following contemporary paper also discusses the set expression
notation in NPL:

    "Design Considerations for a Functional Programming Language",
    Burstall, Rod M.,
    in "Infotech State of the Art Conference: The Software Revolution,
        Copenhagen"
    October 1977

The paper contains the following passage, where Burstall attributes
the notation originally to Schwarz and SETL (he also mentioned this to
me in a personal communication).  The concrete syntax seems to have
changed slightly:

  ``To make it easier to work with sets, we permit a notation very similar
    to mathematical usage (following Schwarz in his SETL language).
    Suppose for example that we already have constants s and t denoting
    sets of numbers, then a typical set expression would be

        {i + j : i in s, j in union (s,t) & i < j}

    The general form is:

        {EXPRESSION : VARIABLE in EXPRESSION & EXPRESSION, ...,
                      VARIABLE in EXPRESSION & EXPRESSION}

    We also allow explict sets like {1,2,3}.  So

        {i+j : i in {1,2,3}, j in {1,2,3} & i = j}   is  {2,4,6}''

John Darlington says that he and Rod Burstall introduced the notation
into NPL to make up for the lack of higher-order capability in NPL.
This was shortly after Darlington came to Edinburgh for his Ph.D.
straight after a degree at the London School of Economics which
included a fair bit of logic and in particular ZF (Zermelo-Frankel)
set theory.

Darlington also says that at the same time Richard Waldinger at SRI
was using the same constructs as specification lannguage for his
program synthesis work.

David Turner subsequently adopted this notation in his languages SASL,
KRC and Miranda*, where he has called them ``zf expressions'' (in his
1981 FPCA paper [The Semantic Elegance of Applicative Languages])
set-abstractions and list-abstractions (in his 1985 FPCA paper
[Miranda: A Non-Strict Functional Language with Polymorphic Types]).

Phil Wadler says he believes he originated the term ``list
comprehension'' after a conversation with John Hughes, where he
bemoaned the current nomenclature and Hughes reminded him of the
existing term ``set comprehension''.  The term ``list comprehension''
appears in the following:

    ``The OL Manual''
    Philip Wadler, Quentin Miller and Martin Raskovsky
    Probably 1983-1985 (my copy is undated)

The term ``list comprehension'' also appears in quotation marks in
Wadler's 1985 FPCA paper:

    ``How to Replace Failure by a List of Successes''
    FPCA September 1985, Nancy, France, pp 113-146

Interestingly, I have a pre-publication version of this paper dated
January 1985 where the term used in exactly the same place (last
sentence of para 2) is ``list abstraction'', i.e., it seems to have
been substituted by ``list comprehension'' in the intervening months
before publication.

----------------------------------------------------------------
* ``Miranda'' is a trademark of Research Software, Ltd.
Re: Definitions
#171
Author: Denis Howe
Date: Thu, 20 Aug 1992 16:54
23 lines
1360 bytes
In article <9910@uqcspe.cs.uq.oz.au> michaeln@cs.uq.oz.au (Michael
Norris) wrote:

>Where can I find good definitions of the words relating to
>functional programming?

I don't know where you can find good definitions (apart from the usual
books) but you can find lots of bad ones :-) in wombat.doc.ic.ac.uk
(146.169.22.42) /pub/glossary.

It's probably a bit out of date in places, lacks references to sources
and was mostly written by someone who knew little about the subjects
(me).

Its coverage is wide but shallow - programming languages (particularly
declarative), architectures, a little theory.  It is quite well
cross-referenced.

I would of course be delighted to receive corrections and additions.
Mail me if you'd like me to mail it to you.
--
Denis Howe <dbh@doc.ic.ac.uk>
So Biggs, you're the idiot who bought all these IBM PCs.  You're fired!
Re: Definitions
#175
Author: Stefan Kahrs
Date: Fri, 21 Aug 1992 11:02
18 lines
1372 bytes
In article <BtAIzF.7wJ@news.larc.nasa.gov> goodrich@lynx.larc.nasa.gov (Mike Goodrich) writes:

[... Michael Norris asking about FuncProg terminology ...]
>   I am currently reading "Functional Programming: Practice and Theory"
>   by Bruce J. MacLennan and highly recommend it.

My 0.02$:
I cannot support that.  The book is not a very good source for
definitions, in particular when it comes to formal definitions (the
section about lambda-calculus is awful).

--
Stefan Kahrs	                   JANET:    smk@uk.ac.ed.dcs
LFCS, Dept. of Computer Science    Internet: smk@dcs.ed.ac.uk
University of Edinburgh            UUCP:     ..!mcsun!uknet!dcs!smk
Edinburgh                          ARPA:     smk%dcs.ed.ac.uk@nsfnet-relay.ac.uk
EH9 3JZ                            Tel:      (44)-31-650-5139
SCOTLAND                           Fax:      (44)-31-667-7209
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads