Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles... more Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles, Logics, and Implementations of High-Level Programming Languages. Erlang workshops started with the millenium, so workshop numbers will match the date for a long while. Good timing, eh?We look forward to a day as enlightening as that of the first workshop, which was held in Firenze a year ago. Phil Wadler will lead off with a talk (with a typically Wadlerian title) about things that type systems can contribute to software development. His invited presentation will be followed by nine talks on Erlang applications, implementations, enhancements, and tools.These talks show how a functional language with a strong focus on multitasking can serve a variety of applications, and how tools, methodologies, and language features can improve the effectiveness of Erlang software developers. The story of Erlang is one of the great successes of functional languages, and this workshop provides an opportunity for practitioners to share their experiences with each other and with interested observers of the Erlang scene.
In a functional program, a simple random number generator may generate a lazy list of random numb... more In a functional program, a simple random number generator may generate a lazy list of random numbers. This is fine when the random numbers are consumed sequentially at a single point in the program. However, things are more complicated in a program where random numbers are used at many locations, such as in a large simulation. The programmer should not need to worry about providing separate generators with a unique seed at each point where random numbers are used. At the same time, the programmer should not need to coordinate the use of a single stream of random numbers in many parts of the program, which can be particularly difficult with lazy evaluation or parallel processing.We discuss several techniques for distributing random numbers to various parts of a program, and some methods of allowing different program components to evaluate random numbers locally. We then propose a new approach in which a random number sequence can be split at a random point to produce a pair of random...
The 8th Symposium on Trends in Functional Programming (TFP 2007) is being held in New York City, ... more The 8th Symposium on Trends in Functional Programming (TFP 2007) is being held in New York City, USA on April 2nd-4th, 2007. It is jointly co-hosted by the Department of Mathematics and Computer Science of Seton Hall University and the Department of Computer Science of The City College of New York. TFP 2007 is the first time the TFP symposium is held in the USA. Its success represents the growing importance of functional programming and the growing importance of the TFP policy to encourage new and ...
Accurate programming is a practical approach to producing high quality programs. It combines idea... more Accurate programming is a practical approach to producing high quality programs. It combines ideas from test-automation, test-driven development, agile programming, and other state of the art software development methods. In addition to building on approaches that have proven effective in practice, it emphasizes concepts that help programmers sharpen their understanding of both the problems they are solving and the solutions they come up with. This is achieved by encouraging programmers to think about programs in terms of properties.
What would you teach if you had only one course to help students grasp the essence of computation... more What would you teach if you had only one course to help students grasp the essence of computation and perhaps inspire a few of them to make computing a subject of further study? Assume they have the standard college prep background. This would include basic algebra, but not necessarily more advanced mathematics. They would have written a few term papers, but would not have written computer programs. They could surf and twitter, but could not exclusive-or and nand. What about computers would interest them or help them place their experience in context? This paper provides one possible answer to this question by discussing a course that has completed its second iteration. Grounded in classical logic, elucidated in digital circuits and computer software, it expands into areas such as CPU components and massive databases. The course has succeeded in garnering the enthusiastic attention of students with a broad range of interests, exercising their problem solving skills, and introducing ...
The functional paradigm is a common choice for the first course in computing in many European uni... more The functional paradigm is a common choice for the first course in computing in many European universities, especially in the United Kingdom, but a prominent role for the functional paradigm is rare in computing programs in the United States. Introducing the idea is difficult, partly because so few programs use functional methods that qualified instructional staff, at both the faculty and graduate assistant level, are scarce. This paper outlines some ways to facilitate moving towards the use of the declarative paradigms early in the curriculum, presents arguments in favor of doing so, discusses frequently heard arguments against the idea, and describes some experiences with CS1 courses using Haskell.
The functional paradigm is a common choice for the first course in computing in many European uni... more The functional paradigm is a common choice for the first course in computing in many European universities, especially in the United Kingdom, but a prominent role for the functional paradigm is rare in computing programs in the United States. Introducing the idea is difficult, partly because so few programs use functional methods that qualified instructional staff, at both the faculty and graduate assistant level, are scarce. This paper outlines some ways to facilitate moving towards the use of the declarative paradigms early in the curriculum, presents arguments in favor of doing so, discusses frequently heard arguments against the idea, and describes some experiences with CS1 courses using Haskell.
As known, to finish this book, you may not need to get it at once in a day. Doing the activities ... more As known, to finish this book, you may not need to get it at once in a day. Doing the activities along the day may make you feel so bored. If you try to force reading, you may prefer to do other entertaining activities. But, one of concepts we want you to have this book is that it will not make you feel bored. Feeling bored when reading will be only unless you don't like the book. fortran for humans really offers what everybody wants.
LISP PROLOG and denotational programming LISP - notations for data in LISP functions building lis... more LISP PROLOG and denotational programming LISP - notations for data in LISP functions building lists and extracting components more list manipulation functions a lenient function: "if" naming partial results: "let" recursion debugging more lenient functions: "and, or" pumping divide and conquer input and output higher order functions numbers PROLOG - notation for data and variables in PROLOG propositional facts, rules, and queries relations containing variables unification: how the interpreter instantiates variables recursion propagation and accumulation of results divide and conquer "and/or" control flow saving computation with embedded "or" control "not" backtracking generating all solutions using "Bagof" and "Setof" inhibiting backtracking built-in relations for program file access and transformation of terms program construction and debugging numbers input and output declarative and procedural semantics of logic prog
Page 1. Algorithm 479 A Minimal Spanning Tree Clustering Method [Z] RL Page [Recd. 18 Feb. 1972, ... more Page 1. Algorithm 479 A Minimal Spanning Tree Clustering Method [Z] RL Page [Recd. 18 Feb. 1972, 8 Feb. 1973, and 29 Mar. 1973] Department of Mathematics and Computer Science, Colorado State University, Fort Collins, CO 80521 ...
Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles... more Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles, Logics, and Implementations of High-Level Programming Languages. Erlang workshops started with the millenium, so workshop numbers will match the date for a long while. Good timing, eh?We look forward to a day as enlightening as that of the first workshop, which was held in Firenze a year ago. Phil Wadler will lead off with a talk (with a typically Wadlerian title) about things that type systems can contribute to software development. His invited presentation will be followed by nine talks on Erlang applications, implementations, enhancements, and tools.These talks show how a functional language with a strong focus on multitasking can serve a variety of applications, and how tools, methodologies, and language features can improve the effectiveness of Erlang software developers. The story of Erlang is one of the great successes of functional languages, and this workshop provides an opportunity for practitioners to share their experiences with each other and with interested observers of the Erlang scene.
Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles... more Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles, Logics, and Implementations of High-Level Programming Languages. Erlang workshops started with the millenium, so workshop numbers will match the date for a long while. Good timing, eh?We look forward to a day as enlightening as that of the first workshop, which was held in Firenze a year ago. Phil Wadler will lead off with a talk (with a typically Wadlerian title) about things that type systems can contribute to software development. His invited presentation will be followed by nine talks on Erlang applications, implementations, enhancements, and tools.These talks show how a functional language with a strong focus on multitasking can serve a variety of applications, and how tools, methodologies, and language features can improve the effectiveness of Erlang software developers. The story of Erlang is one of the great successes of functional languages, and this workshop provides an opportunity for practitioners to share their experiences with each other and with interested observers of the Erlang scene.
In a functional program, a simple random number generator may generate a lazy list of random numb... more In a functional program, a simple random number generator may generate a lazy list of random numbers. This is fine when the random numbers are consumed sequentially at a single point in the program. However, things are more complicated in a program where random numbers are used at many locations, such as in a large simulation. The programmer should not need to worry about providing separate generators with a unique seed at each point where random numbers are used. At the same time, the programmer should not need to coordinate the use of a single stream of random numbers in many parts of the program, which can be particularly difficult with lazy evaluation or parallel processing.We discuss several techniques for distributing random numbers to various parts of a program, and some methods of allowing different program components to evaluate random numbers locally. We then propose a new approach in which a random number sequence can be split at a random point to produce a pair of random...
The 8th Symposium on Trends in Functional Programming (TFP 2007) is being held in New York City, ... more The 8th Symposium on Trends in Functional Programming (TFP 2007) is being held in New York City, USA on April 2nd-4th, 2007. It is jointly co-hosted by the Department of Mathematics and Computer Science of Seton Hall University and the Department of Computer Science of The City College of New York. TFP 2007 is the first time the TFP symposium is held in the USA. Its success represents the growing importance of functional programming and the growing importance of the TFP policy to encourage new and ...
Accurate programming is a practical approach to producing high quality programs. It combines idea... more Accurate programming is a practical approach to producing high quality programs. It combines ideas from test-automation, test-driven development, agile programming, and other state of the art software development methods. In addition to building on approaches that have proven effective in practice, it emphasizes concepts that help programmers sharpen their understanding of both the problems they are solving and the solutions they come up with. This is achieved by encouraging programmers to think about programs in terms of properties.
What would you teach if you had only one course to help students grasp the essence of computation... more What would you teach if you had only one course to help students grasp the essence of computation and perhaps inspire a few of them to make computing a subject of further study? Assume they have the standard college prep background. This would include basic algebra, but not necessarily more advanced mathematics. They would have written a few term papers, but would not have written computer programs. They could surf and twitter, but could not exclusive-or and nand. What about computers would interest them or help them place their experience in context? This paper provides one possible answer to this question by discussing a course that has completed its second iteration. Grounded in classical logic, elucidated in digital circuits and computer software, it expands into areas such as CPU components and massive databases. The course has succeeded in garnering the enthusiastic attention of students with a broad range of interests, exercising their problem solving skills, and introducing ...
The functional paradigm is a common choice for the first course in computing in many European uni... more The functional paradigm is a common choice for the first course in computing in many European universities, especially in the United Kingdom, but a prominent role for the functional paradigm is rare in computing programs in the United States. Introducing the idea is difficult, partly because so few programs use functional methods that qualified instructional staff, at both the faculty and graduate assistant level, are scarce. This paper outlines some ways to facilitate moving towards the use of the declarative paradigms early in the curriculum, presents arguments in favor of doing so, discusses frequently heard arguments against the idea, and describes some experiences with CS1 courses using Haskell.
The functional paradigm is a common choice for the first course in computing in many European uni... more The functional paradigm is a common choice for the first course in computing in many European universities, especially in the United Kingdom, but a prominent role for the functional paradigm is rare in computing programs in the United States. Introducing the idea is difficult, partly because so few programs use functional methods that qualified instructional staff, at both the faculty and graduate assistant level, are scarce. This paper outlines some ways to facilitate moving towards the use of the declarative paradigms early in the curriculum, presents arguments in favor of doing so, discusses frequently heard arguments against the idea, and describes some experiences with CS1 courses using Haskell.
As known, to finish this book, you may not need to get it at once in a day. Doing the activities ... more As known, to finish this book, you may not need to get it at once in a day. Doing the activities along the day may make you feel so bored. If you try to force reading, you may prefer to do other entertaining activities. But, one of concepts we want you to have this book is that it will not make you feel bored. Feeling bored when reading will be only unless you don't like the book. fortran for humans really offers what everybody wants.
LISP PROLOG and denotational programming LISP - notations for data in LISP functions building lis... more LISP PROLOG and denotational programming LISP - notations for data in LISP functions building lists and extracting components more list manipulation functions a lenient function: "if" naming partial results: "let" recursion debugging more lenient functions: "and, or" pumping divide and conquer input and output higher order functions numbers PROLOG - notation for data and variables in PROLOG propositional facts, rules, and queries relations containing variables unification: how the interpreter instantiates variables recursion propagation and accumulation of results divide and conquer "and/or" control flow saving computation with embedded "or" control "not" backtracking generating all solutions using "Bagof" and "Setof" inhibiting backtracking built-in relations for program file access and transformation of terms program construction and debugging numbers input and output declarative and procedural semantics of logic prog
Page 1. Algorithm 479 A Minimal Spanning Tree Clustering Method [Z] RL Page [Recd. 18 Feb. 1972, ... more Page 1. Algorithm 479 A Minimal Spanning Tree Clustering Method [Z] RL Page [Recd. 18 Feb. 1972, 8 Feb. 1973, and 29 Mar. 1973] Department of Mathematics and Computer Science, Colorado State University, Fort Collins, CO 80521 ...
Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles... more Welcome to the second Erlang Workshop held as part of the federation of conferences on Principles, Logics, and Implementations of High-Level Programming Languages. Erlang workshops started with the millenium, so workshop numbers will match the date for a long while. Good timing, eh?We look forward to a day as enlightening as that of the first workshop, which was held in Firenze a year ago. Phil Wadler will lead off with a talk (with a typically Wadlerian title) about things that type systems can contribute to software development. His invited presentation will be followed by nine talks on Erlang applications, implementations, enhancements, and tools.These talks show how a functional language with a strong focus on multitasking can serve a variety of applications, and how tools, methodologies, and language features can improve the effectiveness of Erlang software developers. The story of Erlang is one of the great successes of functional languages, and this workshop provides an opportunity for practitioners to share their experiences with each other and with interested observers of the Erlang scene.
Uploads
Papers by Rex Page