Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/obsidiansystems/seven-guis-vty
7GUIs implemented in reflex-vty
https://github.com/obsidiansystems/seven-guis-vty
frp haskell haskell-learning reflex-frp tui vty
Last synced: 3 days ago
JSON representation
7GUIs implemented in reflex-vty
- Host: GitHub
- URL: https://github.com/obsidiansystems/seven-guis-vty
- Owner: obsidiansystems
- License: bsd-3-clause
- Created: 2022-07-21T06:06:41.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-09-18T19:51:10.000Z (about 1 year ago)
- Last Synced: 2024-08-03T15:07:32.300Z (3 months ago)
- Topics: frp, haskell, haskell-learning, reflex-frp, tui, vty
- Language: Nix
- Homepage:
- Size: 222 KB
- Stars: 3
- Watchers: 15
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# seven-guis-vty
Repository for the [7GUIs](https://eugenkiss.github.io/7guis/) project.
## The structure of tutorials
Tutorials are packaged, like most Haskell applications and libraries, as a [cabal](https://www.haskell.org/cabal/) package. It was created by running `cabal init`. One thing that is a little unusual, though not unheard of, is that the source files for this package are [literate Haskell](https://wiki.haskell.org/Literate_programming) files. Everything outside of code blocks that begin with "\`\`\`haskell" will be ignored by the compiler.
We use the [markdown-unlit](https://github.com/sol/markdown-unlit) preprocessor to allow us to write tutorials in markdown (rather than one of Haskell's built-in literate document styles) but still allow the code blocks to be recognized and compiled.
Each of the code snippets will be a function that can be run on its own in the REPL. The functions will gradually grow in complexity until the final version implements the desired GUI. This isn't how you'd normally program, but we're trying to "show our work" so that you can see how we build up the GUI in smaller steps.
> NB: One limitation of the format we've chosen (a single literate haskell source file) is that the module imports have to be declared in one place, above all of the code, so the first code you see will include imports that aren't needed until later. We'll use qualified imports to try to make it clear why something is being imported.
## Blog Posts
1. [Counter](https://obsidian.systems/blog/seven-guis-vty-1-counter)
1. Temperature-Converter (not published yet)