Accessible bridge between category theory and functional programming
Fethi Kadhi
Monadic programming presents a significant challenge for many programmers. In light of category theory, we offer a new perspective on the use of monads in functional programming. This perspective is clarified through numerous examples coded in Haskell.
Dynamic String Generation and C++-style Output in Fortran
Marcus Mohr
Using standard components of modern Fortran we present a technique to dynamically generate strings with as little coding overhead as possible on the application side. Additionally we demonstrate how this can be extended to allow for output generation with a C++ stream-like look and feel.
Proceedings Twelfth International Workshop on Trends in Functional Programming in Education
Elena Machkasova
This volume contains the papers, accepted after post-reviewing, based on presentations submitted to TFPIE 2023 that took place at UMAss Boston in Boston, Massachusetts, USA on January 12th 2023. TFPIE stands for Trends in Functional Programming in Education, where authors present research and experiences in teaching concepts of functional programming at any level.
Right and wrong: ten choices in language design
Bertrand Meyer
A description of language design choices that have profound effects on software quality, criticism of how ordinary OO languages address them, and explanation of the thinking behind Eiffel's corresponding mechanisms.
Proceedings ML Family / OCaml Users and Developers workshops
Sam Lindley, Gabriel Scherer
This volume contains the joint post-proceedings of the 2017 editions of the ML Family Workshop and the OCaml Users and Developers Workshop which took place in Oxford, UK, September 2017, and which were colocated with the ICFP 2017 conference.
Rusty Variation: Deadlock-free Sessions with Failure in Rust
Wen Kokke
Rusty Variation (RV) is a library for session-typed communication in Rust which offers strong compile-time correctness guarantees. Programs written using RV are guaranteed to respect a specified protocol, and are guaranteed to be free from deadlocks and races.
A Formal Semantics of Findel in Coq (Short Paper)
Andrei Arusoaie
We present the first formal semantics of Findel - a DSL for specifying financial derivatives. The semantics is encoded in Coq, and we use it to prove properties of several Findel contracts.
A Note On Compliance Relations And Fixed Points
Maurizio Murgia
We study compliance relations between behavioural contracts in a syntax independent setting based on Labelled Transition Systems. We introduce a fix-point based family of compliance relations, and show that many compliance relations appearing in literature belong to this family.
Partial Cartesian Graph Product
Moez A. AbdelGawad
In this paper we define a new product-like binary operation on directed graphs, and we discuss some of its properties. We also briefly discuss its application in constructing the subtyping relation in generic nominally-typed object-oriented programming languages.
Undecidability of Inferring Linear Integer Invariants
Sharon Shoham
We show that the problem of determining the existence of an inductive invariant in the language of quantifier free linear integer arithmetic (QFLIA) is undecidable, even for transition systems and safety properties expressed in QFLIA.
When You Should Use Lists in Haskell (Mostly, You Should Not)
Johannes Waldmann
We comment on the over-use of lists in functional programming. With this respect, we review history of Haskell and some of its libraries, and hint at current developments.
The Maximal MAM, a Reasonable Implementation of the Maximal Strategy
Beniamino Accattoli
This note is about a reasonable abstract machine, called Maximal MAM, implementing the maximal strategy of the lambda-calculus, that is, the strategy that always produces a longest evaluation sequence.
Logic Programming with Macro Connectives
Keehang Kwon
Logic programming such as Prolog is often sequential and slow because each execution step processes only a single, $micro$ connective. To fix this problem, we propose to use $macro$ connectives as the means of improving both readability and performance.
A Logical Approach to Event Handling in Imperative Languages
Keehang Kwon
While event handling is a key element in modern interactive programming, it is unfortunate that its theoretical foundation is rather weak. To solve this problem, we propose to adopt a game-logical approach of computability logic \cite{Jap08} to event handling.
Proceedings of the 6th European Conference on Python in Science (EuroSciPy 2013)
Pierre de Buyl, Nelle Varoquaux
These are the proceedings of the 6th European Conference on Python in Science, EuroSciPy 2013, that was held in Brussels (21-25 August 2013).
LXG Compiler - Design and Implementation
Emil Vassev
LXG is a simple Pascal-like language. It is a functional programming language developed for studying compiler design and implementation. The language supports procedure and variable declarations, but no classes. This paper reports the design and implementation of an LXG compiler. Test results are presented as well.
18th Workshop on Logic-based methods in Programming Environments (WLPE 2008)
Puri Arenas, Damiano Zanardini
This volume contains the papers presented at WLPE 2008: the 18th Workshop on Logic-based Methods in Programming Environments held on 12th December, 2008 in Udine, Italy. It was held as a satellite workshop of ICLP 2008, the 24th International Conference on Logic Programming.
The Challenges of Hardware Synthesis from C-Like Languages
Stephen A. Edwards
MANY TECHNIQUES for synthesizing digital hardware from C-like languages have been proposed, but none have emerged as successful as Verilog or VHDL for register-transfer-level design. This paper looks at two of the fundamental challenges: concurrency and timing control.
Mini-indexes for literate programs
Donald E. Knuth
This paper describes how to implement a documentation technique that helps readers to understand large programs or collections of programs, by providing local indexes to all identifiers that are visible on every two-page spread. A detailed example is given for a program that finds all Hamiltonian circuits in an undirected graph.
The Logic Programming Paradigm and Prolog
Krzysztof R. Apt
This is a tutorial on logic programming and Prolog appropriate for a course on programming languages for students familiar with imperative programming.