20 comments

[ 4.0 ms ] story [ 50.3 ms ] thread
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.

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.

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?
It feels like C#, so it seems easy to learn. Looks fun.
Quick fyi that your website is “zoomed in” on mobile safari and a little difficult to use

(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!

Same here. Needs one of those "standard" html headers, I think.
Hm, I checked the site and it does have one of these:

  <meta name="viewport" content="width=device-width, initial-scale=1.0">
Which is the standard. I wonder if something else is interfering with it.
(comment deleted)
I took a look and added -webkit-text-size-adjust to please Safari, hope it helps. And thanks!
Grid layout error in your CSS/ HTML, I think.

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.

How do you pronounce the name?

I created a backronym of a longwinded name and I pronounce it as hi-ca, or perhaps hee-ca :)

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

Looks good. How fast are the compile times and files, and informative are the error messages?
Does this aims to be the python of functional programming languages?
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.

I did a comparison to python which shows the differences, and where they are similar: https://www.hica.dev/docs/hica-vs-python/

Looks very tasteful! Good job!