AI summary · arXiv: 2308.06971v1 · cs.PL

Disco: A Functional Programming Language for Discrete Mathematics

Brent A. Yorgey (Hendrix College)
Original paper · DOI 10.4204/eptcs.382.4 Submitted to arXiv on 14 Aug. 2023 Published in Electronic Proceedings in Theoretical Computer Science (14 Aug. 2023) In Proceedings TFPIE 2023, arXiv:2308.06110 License: CC BY 4.0

How to read this summary? Illustrated guide

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.

AI-generated keywords: Disco

Read further

  • Comprehensive Summary
  • Layman's Summary
  • Blog article
  • Original abstract
Disco is a pure, strict, statically typed functional programming language that aims to introduce students to fundamental concepts of functional programming and enhance their understanding and application of 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, as well as a REPL (Read-Eval-Print Loop) for interactive code execution. The language is implemented in Haskell and its source code is openly available on GitHub for further exploration and development. A Pure Functional Programming Language for Discrete Mathematics Courses Key features of Disco include mathematically-inspired notation, property-based testing, equirecursive algebraic types, subtyping, built-in list, bag, and finite set types. Disco's Approach to Teaching Fundamental Concepts In addition to its technical aspects,<Organization>, Disco also offers student-focused documentation to support learners in grasping the intricacies of both functional programming and discrete mathematics. <Organization>'s <Organization>: Enhancing Understanding Through Practical Coding Exercises Research presented at the International Workshop on Trends in Functional Programming in Education 2023 (TFPIE 2023) highlights the synergy between discrete math topics and functional programming exercises. <Organization>: Bridging the Gap Between Theory and Practice By incorporating functional programming into the curriculum,<Organization>'s can benefit from a more balanced learning experience that leverages their respective strengths while providing new perspectives on familiar subjects. <Organization>: Promoting Interdisciplinary Connections Between Mathematics and Computer Science Overall, Disco serves as a valuable tool for educators looking to enrich their discrete mathematics courses with practical coding exercises and computational tools. Its integration of functional programming concepts not only enhances students' problem-solving skills but also promotes interdisciplinary connections between mathematics and computer science disciplines.

Was this synthesis useful?

Score: 0

Why do we need votes?

Votes are used to determine whether we need to re-run our summarizing tools. If the count reaches -10, our tools can be restarted.

Figures and plots

Ask about a figure by number or use its question button to request visual analysis. Up to two figures and four image panels per question. Values read from plots are approximate; check the original data.

AI assistant instructions?

Tools for this paper

Explain it differently 1 free rewrite left today
Save to a collection Group papers in collections to compare them, chat with them and export them. Continue with Google Create a free account Log in

Advanced tools Premium

For researchers who follow a field closely: citation alerts, journal-club slides, version comparison and Zotero export. Discover Premium

Zotero
Citation alerts Citation alerts guide

Papers around this one

See them on a map

Ranked by how close their title and abstract are to this paper’s. Select some to read them together.

Closest papers

  1. Very close* Cited by this paper
    Introducing functional programming in discrete mathematics
    R. Wainwright · 1992 · Technical Symposium on Computer Science Education · cited 15 times · Not summarized yet
  2. Close* Cited by this paper
    Functional programming as a discrete mathematics topic
    Thomas VanDrunen · 2017 · Inroads · cited 8 times · Not summarized yet
  3. Close* Cited by this paper
    The case for teaching functional programming in discrete math
    Thomas VanDrunen · 2011 · OOPSLA Companion · cited 7 times · Not summarized yet
  4. Close
    Discrete Math with Programming: A Principled Approach
    Yan-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…

  5. Close*
    ISETL: a language for teaching discrete mathematics (abstract)
    G. Levin · 1990 · International Conference on Scientific Computing · cited 2 times · Not summarized yet
  6. Related* Cited by this paper
    Discrete mathematics using a computer
    Cordelia V. Hall, John T. O'Donnell · 2000 · cited 32 times · Not summarized yet
  7. Related*
    Mathematics of Discrete Structures for Computer Science
    Gordon J. Pace · 2012 · Springer Berlin Heidelberg · cited 6 times · Not summarized yet
  8. Related
    Teaching Introductory Functional Programming Using Haskelite
    Pedro 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

  1. Related*
    Enhancing the learning and teaching of functions through programming in ML
    Cong-Cong Xing · 2008 · Journal of Computing Sciences in Colleges (JCSC; Formerly: Journal of Computing in Small Colleges) · cited 3 times · Not summarized yet
  2. Related
    The Lean 4 Theorem Prover and Programming Language
    L. 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…

  3. Related*
    QuickCheck: a lightweight tool for random testing of Haskell programs
    Koen Claessen, John Hughes · 2000 · ACM SIGPLAN International Conference on Functional Programming · cited 1,436 times · Not summarized yet
  4. Related*
    A 2007 model curriculum for a liberal arts degree in computer science
    · 2007 · JERC · cited 35 times · Not summarized yet
  5. Related* A method it uses
    Extending Hindley-Milner Type Inference with Coercive Structural Subtyping
    Dmitriy Traytel, Stefan Berghofer, T. Nipkow · 2011 · Asian Symposium on Programming Languages and Systems · cited 19 times · Not summarized yet

Papers that cite it

  1. Related
    Teaching Type Systems Implementation with Stella, an Extensible Statically Typed Programming Language
    AbdelRahman 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…

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.