
Central European Functional Programming School
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
The 11 revised full papers presented were carefully reviewed and selected. The lectures cover a wide range of topics such as design patterns, semantics, types, and advanced programming in various functional programming languages.
More details
Other editions
Additional editions

Content
- Intro
- Title
- Preface
- Organization
- Table of Contents
- Rapid Prototyping of DSLs with F\#
- F\#
- Getting Started with F\#
- Sequences and Sequence Expressions
- Pattern Matching and Active Patterns
- Developing DSLs
- Defining the Language Primitives
- Building the Parser Using Active Patterns
- Writing the Evaluator
- The Programming Shell around Simply
- Further Considerations
- Conclusions
- References
- Erlang Behaviours: Programming with Process Design Patterns
- Introduction
- Erlang
- Process Skeletons
- Client/Server Models
- A Client/Server Example
- A Process Pattern Example
- OTP Behaviours
- Introduction
- Generic Servers
- Starting Your Server
- Passing Messages
- Stopping the Server
- Other Behaviours
- Conclusions
- Reasoning about Codata
- Introduction
- Background: Idioms
- Summary and Related Work
- Streams
- Interleaving
- Definitions and Proofs
- Recursion and Iteration
- Summary and Related Work
- Application: Recurrences
- Tabulation
- Bit-Fiddling
- Summary and Related Work
- Application: Finite Calculus
- Finite Difference
- Summation
- Summary and Related Work
- Infinite Trees
- Definitions and Proofs
- Recursion and Iteration
- Tabulation
- Infinite Trees and Sequences
- Application: Enumerating the Positive Rationals
- Summary and Related Work
- Tabulation
- Summary and Related Work
- Conclusion
- References
- Programming in Manticore, a Heterogenous Parallel Functional Language
- Introduction
- Overview of the Manticore Language
- Sequential Programming
- Explicitly-Threaded Parallelism
- Implicitly-Threaded Parallelism
- Future Directions
- Explicit Concurrency in Manticore
- Introduction
- Basic Concurrency Primitives
- First-Class Synchronous Operations
- Additional First-Class Synchronous Operations
- Examples
- Implicit Parallelism in Manticore
- Introduction
- Parallel Arrays
- Parallel Tuples
- Parallel Bindings
- Parallel Cases
- Exceptions
- Examples
- Conclusion
- Conclusion
- References
- Non-monadic Models of Mutable References
- Introduction
- Overview
- Monadic Models of References
- IO-References
- ST-References
- Monad-Independent Interfaces
- References Based on Unique Heaps
- Uniqueness Typing
- The Common Interface
- Heap Seeds
- Pure Implementation
- Homogeneous Heaps
- Separate Seeds
- Deletable References
- Shared References
- Union of Heaps
- The Proposed Model
- Extensions
- Applications
- Strongly Connected Components
- Pointer Reversal Walk
- Type Equations Solver
- Related Work
- An Existing Model in Clean
- Other Related Works
- Future Work
- Conclusion
- References
- Software Testing with QuickCheck
- Introduction
- Properties and Generators
- Testing and Test Automation
- Property-Based Testing
- Failure Diagnosis and Shrinking
- Conditional Properties
- Custom Generators
- Distribution of Test Cases
- Properties That Fail
- Points to Remember
- Exercises
- lecture1.erl
- Symbolic Test Cases
- An Abstract Data Type of Dictionaries
- Generating Dictionaries
- Symbolic Test Cases
- Shrinking Symbolic Tests
- ``Hoare Testing'' of Abstract Data Types
- Debugging Failing Properties
- Exercises
- lecture2.erl
- Testing Stateful Systems
- The Process Registry
- Testing Stateful Interfaces
- Generating Commands
- Modelling State Transitions
- Conditional Generation
- Specifying Preconditions
- Specifying Postconditions
- Exercises
- reg_eqc.erl
- QuickCheck in Industry
- Conclusions
- References
- An Effective Methodology for Defining Consistent Semantics of Complex Systems
- Introduction
- Formal Semantics
- The Imperative Language While
- The Semantics of Expressions in While
- Denotational Semantics
- Natural Semantics
- Structural Operational Semantics
- Sanity Checks
- Simulating the Semantics
- Testing Properties of the Semantics
- A Semantics for iTasks
- Task Identification
- Events
- Rewriting Tasks Given an Event
- Equivalence of Tasks
- Determining the Equivalence of Task Trees
- Determining Equivalence by Applying Events
- Determining Equivalence of Tasks by Comparing Task Trees
- Testing Properties of iTasks
- Related Work
- Discussion
- References
- Types for Units-of-Measure: Theory and Practice
- Introduction
- An Introduction to Units-of-Measure in F#
- Introducing Units
- Interlude: The F\# PowerPack
- Unit Conversions
- Interfacing Non-unit-aware Code
- Dimensionless Quantities
- Parametric Polymorphism
- Zero
- Application Area: Statistics
- Application Area: Calculus
- Unit-Parameterized Types
- Polymorphic Recursion
- Polymorphic Type Inference for Units-of-Measure
- Grammar for Units
- Equations for Units
- Deciding Equations
- Solving Equations
- A Unification Algorithm
- Types
- Type Schemes
- A Type System and Inference Algorithm
- Type Scheme Equivalence
- Open Type Schemes and Generalized Let
- Semantics of Units
- Units Going Wrong
- Polymorphic Functions Going Wrong
- Parametricity
- Theorems for Free
- Zero
- Definability
- Semantic Typing
- Type Isomorphisms
- Dimensional Analysis
- Discussion
- References
- Functional Programming with C\++ Template Metaprograms
- Introduction
- Informal Introduction to C\++ Templates
- C\++ Template Metaprograms
- Connection between Functional Programming and C++ Template Metaprograms
- Functional Interface for Template Metaprograms
- Generating Yhc.Core Code
- Generating Lambda Expressions
- Generating Template Metaprograms
- Lazy Application
- Interoperability with Directly Implemented C++ Metafunctions
- Evaluation
- Debugging Template Metaprograms
- Ontology of Template Metaprogram Errors
- Debugging Techniques
- Profiling
- Related Work
- FC\++
- Boost Metaprogramming Library
- Haskell Type Classes
- Debugging and Profiling
- Conclusion
- References
- Embedding a Proof System in Haskell
- Introduction
- Overview of the Proof System
- Proof Structure
- Program Extraction
- Design Decisions
- Shallow or Deep Embedding
- Typed Expressions
- Parameters
- Proof Representation
- Frontend
- Frontend for Expressions and Formulas
- Frontend for Proofs
- Summary and Discussion
- Conclusions
- Related Work
- Future Work
- References
- Impact Analysis of Erlang Programs Using Behaviour Dependency Graphs
- Introduction
- Motivating Example
- A Partial Model for Erlang Programs
- Behaviour Dependency Graph
- The Representation of the Erlang Programs
- Dependency Information
- Dependency Rules
- Deriving Dependency Information
- Lemmas
- Example
- Related Work
- Conclusions and Future Work
- References
- Author Index
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.