https://github.com/lue-bird/lau
declarative, visual, minimal programming language that reduces brain load
https://github.com/lue-bird/lau
declarative elm logical-programming-language programming-language simple visual-programming-language
Last synced: 5 months ago
JSON representation
declarative, visual, minimal programming language that reduces brain load
- Host: GitHub
- URL: https://github.com/lue-bird/lau
- Owner: lue-bird
- License: unlicense
- Created: 2023-08-21T22:14:03.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-01T12:00:09.000Z (7 months ago)
- Last Synced: 2025-05-12T23:44:27.562Z (5 months ago)
- Topics: declarative, elm, logical-programming-language, programming-language, simple, visual-programming-language
- Language: Elm
- Homepage: https://lue-bird.github.io/lau/
- Size: 519 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Declarative, visual, minimal programming language.
Reduces things you need to know and keep in your mind.[→ open studio](https://lue-bird.github.io/lau/)
- declarative:
instead of
"1. put the bowl on the table, 2. put in milk, 3. put in cereal"
you say "the bowl is on the table and has milk and cereal in it"
- visual:
put differently colored and shaped blocks together
- minimal:
value, variable, definition, all, any, =, not. That's everything.
No spooky things to keep in mind like mutation, pointer, unmanaged effect, runtime error,
typeclass/trait/interface, module, class, namespace, package, lambda, local definition, difference between types and code## status (TODO)
- scrolling
- fix issue where double click removes outer
- block sidebar
- search (relation, variable, entry key)
- variable renaming
- value lookup entry key renaming
- relation renaming
- navigating to relation definition
- evaluation frame
- relation definition deleting
## web
run locally with```shell
npm install
npx vite
```
and open http://localhost:5173/ to see your appFor all future runs, you just need
```shell
npx vite
```## links
- [vite](https://vitejs.dev/)
- [ryan-haskell/vite-plugin-elm-watch](https://github.com/ryan-haskell/vite-plugin-elm-watch)
- implementation uses [`elm-state-interface`](https://dark.elm.dmy.fr/packages/lue-bird/elm-state-interface/latest/)
- loved this [talk "Beautiful code: typography and visual programming" by Peter Hilton
](https://www.youtube.com/watch?v=rTeqsL4uxws)
- [scratch](https://scratch.mit.edu/), a procedural, OO-ish, visual scripting language## considering (so might never be part of the language)
- uis written in lau where interacting with the outside world is simple and safe which you can even embed in lau code itself
- relations adding its defined parameter (one level deep, so without variables) as an argument
- relation pinning
- you don't need to worry about caching and many other optimizations due to laziness
- identification not by name internally (so that switching languages is easier, renaming is not a breaking change and names can overlap)
- a story for exhaustive case handling (current workaround with giving value lookup might be a bit rough?)
- convenient full value lookup dragging
- other shapes of values (multi-set, so untagged entries) to allow for nicer syntax when argument order doesn't matter e.g. with sum, product, min, max, equals, union, intersection etc.