Disco: A Functional Programming Language for Discrete Mathematics

08/14/2023
by   Brent A. Yorgey, et al.
0

Disco is a pure, strict, statically typed functional programming language designed to be used in the setting of a discrete mathematics course. The goals of the language are to introduce students to functional programming concepts early, and to enhance their learning of mathematics by providing a computational platform for them to play with. It features mathematically-inspired notation, property-based testing, equirecursive algebraic types, subtyping, built-in list, bag, and finite set types, a REPL, and student-focused documentation. Disco is implemented in Haskell, with source code available on GitHub [https://github.com/disco-lang/disco], and interactive web-based REPL available through replit [https://replit.com/@BrentYorgey/Disco#README.md].

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/26/2022

Introduction to Functional Classes in CS1

Students introduced to programming using a design-based approach and a f...
research
07/04/2022

Generalisable Methods for Early Prediction in Interactive Simulations for Education

Interactive simulations allow students to discover the underlying princi...
research
09/06/2017

On dependent types and intuitionism in programming mathematics

It is discussed a practical possibility of a provable programming of mat...
research
06/15/2021

Rcall: Calling R from Matlab

Summary: R and Matlab are two high-level scientific programming language...
research
06/18/2019

The Mathematical Specification of the Statebox Language

This document defines the mathematical backbone of the Statebox programm...
research
08/23/2018

FMS: Functional Programming as a Modelling Language

In this paper we introduce the Functional Modelling System (FMS). The sy...
research
11/28/2020

Discrete Math with Programming: A Principled Approach

Discrete mathematics is the foundation of computer science. It focuses o...

Please sign up or login with your details

Forgot password? Click here to reset