{"id":13837484,"url":"https://github.com/disco-lang/disco","last_synced_at":"2025-07-10T18:33:49.534Z","repository":{"id":10607151,"uuid":"60778492","full_name":"disco-lang/disco","owner":"disco-lang","description":"Functional teaching language for use in a discrete mathematics course","archived":false,"fork":false,"pushed_at":"2024-08-15T05:26:26.000Z","size":20198,"stargazers_count":158,"open_issues_count":51,"forks_count":22,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-08-21T00:29:06.030Z","etag":null,"topics":["discrete-mathematics","functional-programming","programming-language","teaching"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/disco-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-09T13:51:41.000Z","updated_at":"2024-07-24T16:23:28.000Z","dependencies_parsed_at":"2024-02-19T16:46:28.342Z","dependency_job_id":"a5e473b4-9764-431c-865b-5a2c05c8a5f9","html_url":"https://github.com/disco-lang/disco","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/disco-lang%2Fdisco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/disco-lang%2Fdisco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/disco-lang%2Fdisco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/disco-lang%2Fdisco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/disco-lang","download_url":"https://codeload.github.com/disco-lang/disco/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225653873,"owners_count":17502939,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discrete-mathematics","functional-programming","programming-language","teaching"],"created_at":"2024-08-04T15:01:11.321Z","updated_at":"2025-07-10T18:33:49.519Z","avatar_url":"https://github.com/disco-lang.png","language":"TeX","readme":"[![Build Status](https://travis-ci.org/disco-lang/disco.svg?branch=master)](https://travis-ci.org/disco-lang/disco)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)\n\nDisco is a programming language intended to teach basic functional\nprogramming principles in the context of a discrete mathematics\ncourse.\n\n**If you are a student sent here to install Disco on your computer**,\n[see the instructions below](https://github.com/disco-lang/disco#building-disco)!\n\nDesign principles\n-----------------\n\n* Includes those features, and *only* those features, useful in the\n  context of a discrete math course. This is *not* intended to be a\n  general-purpose language.\n* Syntax is as close to standard *mathematical* practice as possible,\n  to make it easier for mathematicians to pick up, and to reduce as\n  much as possible the incongruity between the language and the\n  mathematics being explored and modeled.\n* Tooling, error messages, etc. are very important---the language\n  needs to be accessible to undergrads with no prior programming\n  experience. (However, this principle is, as of yet, only\n  that---there is no tooling or nice error messages to speak of.)\n\nFeel free to look around, ask questions, etc.  You can also\n[contribute](CONTRIBUTING.md)---collaborators are most welcome.\n\nCommunity\n---------\n\nCheck out the disco IRC channel, `#disco-lang` on Libera.Chat.  If\nyou're not familiar with IRC, you can connect via [this web client](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest?#disco-lang).\n\nDocumentation\n-------------\n\nDocumentation is [hosted on\nreadthedocs.io](http://disco-lang.readthedocs.io/en/latest/).\n\nContributing\n------------\n\nIf you'd like to contribute to disco development, check out\n[CONTRIBUTING.md](CONTRIBUTING.md).\n\nBuilding disco\n--------------\n\nScroll down to find the instructions appropriate to your OS!\n\nBuilding disco on Windows\n-------------------------\n\n- Open a PowerShell terminal.\n\n- Run the command `wsl --install`.\n\n- Now type `wsl` to open a Windows Subsystem for Linux prompt.\n\n- Paste this command:\n\n  ```\n  sudo apt install build-essential curl libffi-dev libffi8 libgmp-dev libgmp10 libncurses-dev pkg-config\n  ```\n\n- Paste the following command:\n\n  ```\n  curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh\n  ```\n\n- Keep hitting Enter to accept the defaults.\n\n- Once it finishes, type the following commands:\n\n  ```\n  sudo apt install zlib1g-dev\n  cabal update\n  cabal install disco\n  ```\n\n- If it works, you should be able to now type `disco` at a command\n  prompt, which should display a message like this:\n\n    ```\n    Welcome to Disco!\n\n    A language for programming discrete mathematics.\n\n    Disco\u003e\n    ```\n\n- See the [Troubleshooting](#troubleshooting) section below if you\n  have any issues.\n\nBuilding disco on Mac OS / Linux\n--------------------------------\n\n- Open a terminal.\n\n- Paste the following command:\n\n  ```\n  curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh\n  ```\n\n- Keep hitting Enter to accept the defaults.\n\n- Now run the following:\n\n  ```\n  cabal update\n  cabal install disco\n  ```\n\n- If building fails with an error like `ghc: could not\n  execute: opt`, it means you need to install LLVM.  The easiest\n  way to do this is to first [follow the instructions to install\n  Homebrew](https://brew.sh/) (if you don't already have it), and\n  then type\n\n      brew install llvm\n\n  at a terminal prompt.\n\n    - If this fails with an error like `Could not resolve HEAD to\n      a revision`, then try running these two commands at a\n      terminal prompt:\n\n          rm -rf $(brew --repo homebrew/core)\n          brew tap homebrew/core\n\n      Then re-run the `brew install llvm` command.\n\n    - After installing `llvm`, you may need to close and re-open\n      the terminal before running `cabal install disco` again.\n\n- If it works, you should be able to now type `disco` at a command\n  prompt, which should display a message like this:\n\n    ```\n    Welcome to Disco!\n\n    A language for programming discrete mathematics.\n\n    Disco\u003e\n    ```\n\n- See the [Troubleshooting](#troubleshooting) section below if you\n  have any issues.\n\nTroubleshooting\n---------------\n\n- If installation seems like it succeeded but the `disco` command is\n  not recognized, it may be an issue with your path environment\n  variable settings.  Try running `disco` using an explicit path:\n    - `~/.cabal/bin/disco` on Linux, OSX, or WSL2\n    - `C:\\cabal\\bin\\disco` on Windows\n    - If those don't work, poke around and see if you can figure\n      out where the `cabal/bin` folder is on your computer, and\n      run `disco` from there.\n    - If you wish, you may add the `cabal/bin` folder (wherever it is\n      located) to your `Path` (Windows) or `PATH` (Linux/OSX)\n      environment variable, so that you can run disco simply by typing\n      `disco`.  However, this step is optional.\n\n- On Windows, if disco crashes with an error about `foldr` after you\n  try to type anything (or if it simply closes the entire window when\n  you type anything), the problem is probably that you need to [enable\n  UTF-8 mode](https://github.com/disco-lang/disco/issues/253).\n\n    - Open a command prompt, and type\n\n          chcp 65001\n\n    - Now start `disco` as before (by typing `disco` or\n      `C:\\cabal\\bin\\disco` or whatever worked).\n\n    - You will have to do this every time you run disco.\n      Alternatively, you can create a file called `disco.cmd`\n      containing those two commands, for example:\n\n          chcp 65001\n          C:\\cabal\\bin\\disco\n\n      Now you can simply double-click on `disco.cmd` to run disco.\n\nIf you encounter any difficulties, please let me know --- either come\ntalk to me or [open a GitHub\nissue](https://github.com/disco-lang/disco/issues/new).  These\ninstructions will be kept up-to-date with whatever helpful tips or\nworkarounds I learn. So even if you encounter a difficulty but figure\nout the solution youself, let me know --- that way I can include the\nproblem and solution here so others can benefit!\n","funding_links":[],"categories":["Haskell","Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdisco-lang%2Fdisco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdisco-lang%2Fdisco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdisco-lang%2Fdisco/lists"}