hica is a functional, expression-based programming language, everything is an expression and immutable by default. Its goal is to make programming very approachable for beginners (and veterans alike). You learn by doing small programs, then dive deeper on a thing you really want to build.
This is a guide on functional programming which covers immutability, higher-order functions, pipelines, and more, all with runnable examples.
Thanks for sharing. Very interesting, especially since it’s based on Koka, which I’ve been experimenting with and still trying to wrap my head around. It also reminds me a lot of Shen (https://shenlanguage.org/). I’ll definitely try this out. How do you pronounce the name?
You've assigned `grid-area: main` to the content but the parent grid doesn’t define "main" in its grid-template-areas; the browser creates an implicit grid row/column to satisfy the placement, and this ends up being below the defined areas. Thus requiring 1 page blank space to scroll down.
You can investigate the `<div class="main-content">` in Dev Tools by toggling the 'grid-area' CSS attribute off; that fixes the display.
Thanks for sharing. Very interesting, especially since it’s based on Koka, which I’ve been experimenting with and still trying to wrap my head around. It also reminds me a lot of Shen (https://shenlanguage.org/). I’ll definitely try this out.
That's roughly the positioning, yes. Approachable syntax, low ceremony, runs scripts directly. The difference is that the safety guarantees (no null, tracked effects, exhaustive matching) come for free rather than being opt-in via type checkers.
20 comments
[ 4.0 ms ] story [ 50.3 ms ] threadThis is a guide on functional programming which covers immutability, higher-order functions, pipelines, and more, all with runnable examples.
If that is to theoretical there is https://www.hica.dev/docs/hica-for-beginners/ that walks through functions, pattern matching, and lists by building real programs.
Quick taste:
fun clamp(x, lo, hi) { if x < lo { lo } else if x > hi { hi } else { x } }
fun main() { [1, 5, 12, 3, 9] |> map((x) => clamp(x, 3, 9)) |> println }
Happy to answer questions about the design decisions, the implementation or how to get started.
There is also the HML spec and a library at https://github.com/cladam/hml
(Apologies if it’s just my device)
I’ll take a closer look on my desktop later today, I love seeing new programming languages. Sounds interesting!
You've assigned `grid-area: main` to the content but the parent grid doesn’t define "main" in its grid-template-areas; the browser creates an implicit grid row/column to satisfy the placement, and this ends up being below the defined areas. Thus requiring 1 page blank space to scroll down.
You can investigate the `<div class="main-content">` in Dev Tools by toggling the 'grid-area' CSS attribute off; that fixes the display.
How do you pronounce the name?
Shen is very interesting, I actually created a lisp in hica as a learning exercise, check it out at https://github.com/cladam/hica-lisp
I did a comparison to python which shows the differences, and where they are similar: https://www.hica.dev/docs/hica-vs-python/