AI summary · arXiv: 2308.06971v1 · cs.PL
Disco: A Functional Programming Language for Discrete Mathematics
The essentials
- Disco is a pure, strict, statically typed functional programming language designed for students to learn fundamental concepts of functional programming and apply mathematical principles through computational exploration.
- Developed by Brent A. Yorgey from Hendrix College, Disco offers mathematically-inspired notation, property-based testing, equirecursive algebraic types, subtyping, built-in list, bag, and finite set types.
- The language provides a REPL (Read-Eval-Print Loop) for interactive code execution and is implemented in Haskell with its source code openly available on GitHub.
- Disco's approach includes student-focused documentation to support learners in understanding functional programming and discrete mathematics intricacies.
- Research presented at the International Workshop on Trends in Functional Programming in Education 2023 highlights the synergy between discrete math topics and functional programming exercises.
- By incorporating Disco into the curriculum, educators can provide a balanced learning experience that leverages strengths of both disciplines while promoting interdisciplinary connections between mathematics and computer science.
Key points written by AI: they may contain errors, check them against the paper.
Ask questions about this paper to our AI assistant
How to chat with this paper? Illustrated guide
You can also chat with multiple papers at once here.
Keep this conversation — a free account saves your questions and answers, your collections of papers and your alerts.
Continue with Google Create a free accountTools for this paper
Advanced tools Premium
For researchers who follow a field closely: citation alerts, journal-club slides, version comparison and Zotero export. Discover Premium
Papers around this one
See them on a mapRanked by how close their title and abstract are to this paper’s. Select some to read them together.
Closest papers
-
Introducing functional programming in discrete mathematicsR. Wainwright · 1992 · Technical Symposium on Computer Science Education · cited 15 times · Not summarized yet
-
Functional programming as a discrete mathematics topicThomas VanDrunen · 2017 · Inroads · cited 8 times · Not summarized yet
-
The case for teaching functional programming in discrete mathThomas VanDrunen · 2011 · OOPSLA Companion · cited 7 times · Not summarized yet
-
Discrete Math with Programming: A Principled ApproachYan-Hong A. Liu, Matthew S. Castellana · 2020 · Technical Symposium on Computer Science Education · cited 7 times · Not summarized yet
Abstract
Discrete mathematics is the foundation of computer science. It focuses on concepts and reasoning methods that are studied using math notations. It has long been argued that discrete math is better taught with programming, which takes concepts and computing methods and turns them into executable programs. What has been lacking is a principled approach that supports all central concepts of discrete math---especially predicate logic---and that directly and precisely connects math notations with executable programs. This paper introduces such an approach. It is based on the use of a powerful language that extends the Python programming language with proper logic quantification ("for all'' and "e…
-
ISETL: a language for teaching discrete mathematics (abstract)G. Levin · 1990 · International Conference on Scientific Computing · cited 2 times · Not summarized yet
-
Discrete mathematics using a computerCordelia V. Hall, John T. O'Donnell · 2000 · cited 32 times · Not summarized yet
-
Mathematics of Discrete Structures for Computer ScienceGordon J. Pace · 2012 · Springer Berlin Heidelberg · cited 6 times · Not summarized yet
-
Teaching Introductory Functional Programming Using HaskelitePedro Vasconcelos · 2025 · TFPiE · Not summarized yet
Abstract
Learning functional programming requires learning a substitution-based computational model. While substitution should be a familiar concept from high-school algebra, students often have difficulty applying it to new settings, such as recursive definitions, algebraic data types and higher-order functions. Step-by-step interpreters have been shown to help beginners by clarifying misconceptions and improving understanding. This paper reports on the experience of using a step-by-step tracing interpreter for a subset of Haskell while teaching an introductory functional programming course at the University of Porto. We describe the use of the interpreter, present some feedback obtained from studen…
Prior work it builds on
-
Enhancing the learning and teaching of functions through programming in MLCong-Cong Xing · 2008 · Journal of Computing Sciences in Colleges (JCSC; Formerly: Journal of Computing in Small Colleges) · cited 3 times · Not summarized yet
-
The Lean 4 Theorem Prover and Programming LanguageL. D. de Moura, S. Ullrich · 2021 · CADE · cited 1,150 times · Not summarized yet
Abstract
Lean 4 is a reimplementation of the Lean interactive theorem prover (ITP) in Lean itself. It addresses many shortcomings of the previous versions and contains many new features. Lean 4 is fully extensible: users can modify and extend the parser, elaborator, tactics, decision procedures, pretty printer, and code generator. The new system has a hygienic macro system custom-built for ITPs. It contains a new typeclass resolution procedure based on tabled resolution, addressing significant performance problems reported by the growing user base. Lean 4 is also an efficient functional programming language based on a novel programming paradigm called functional but in-place. Efficient code generatio…
-
QuickCheck: a lightweight tool for random testing of Haskell programsKoen Claessen, John Hughes · 2000 · ACM SIGPLAN International Conference on Functional Programming · cited 1,436 times · Not summarized yet
-
A 2007 model curriculum for a liberal arts degree in computer science· 2007 · JERC · cited 35 times · Not summarized yet
-
Extending Hindley-Milner Type Inference with Coercive Structural SubtypingDmitriy Traytel, Stefan Berghofer, T. Nipkow · 2011 · Asian Symposium on Programming Languages and Systems · cited 19 times · Not summarized yet
Papers that cite it
-
Teaching Type Systems Implementation with Stella, an Extensible Statically Typed Programming LanguageAbdelRahman Abounegm, Nikolai Kudasov, A. Stepanov · 2024 · TFPIE · Not summarized yet
Abstract
We report on a half-semester course focused around implementation of type systems in programming languages. The course assumes basics of classical compiler construction, in particular, the abstract syntax representation, the Visitor pattern, and parsing. The course is built around a language Stella with a minimalistic core and a set of small extensions, covering algebraic data types, references, exceptions, exhaustive pattern matching, subtyping, recursive types, universal polymorphism, and type reconstruction. Optionally, an implementation of an interpreter and a compiler is offered to the students. To facilitate fast development and variety of implementation languages we rely on the BNF Co…
Go further
How are these papers found?
We compare the title and abstract of this paper with those of every paper summarized on this site, and with the papers Semantic Scholar recommends, those it cites and those citing it (for a much-cited paper, its most recent citations and, from OpenAlex, the most cited ones). Among the prior work and the follow-ups, the papers that use each other in depth, a method it uses and the much-cited follow-ups come a little higher. The levels (very close, close, related) come from the similarity of the texts, not from a judgment of quality; * marks a paper without an abstract, compared by its title. The sentence under a paper is written by an AI from the two abstracts: check it in the papers. A paper marked not relevant by three readers leaves the list.
Updated on 1 November 2026.
The previous summary was created more than a year ago and can be re-run (if necessary) by clicking on the Run button below.
Disclaimer: The AI-based summarization tool and virtual assistant provided on this website may not always provide accurate and complete summaries or responses. We encourage you to carefully review and evaluate the generated content to ensure its quality and relevance to your needs.