Live data from Hacker News

Sky – an Elm-inspired language that compiles to Go

github.com

11–20 of 99 posts

Re: Sky – an Elm-inspired language that compiles to Go

#13
post #12
post #11

Great work :). Go doesn't have TCO. That means functional languages (no for loops) could blow up the stack. How did you solve that?

You can just compile any tail recursive function to a function with a loop and no recursion.

Right but recursion is only a smaller part of why the optimization is important. It means tail-called functions still build on the stack and long function chains—as is common with fp—can overflow

Re: Sky – an Elm-inspired language that compiles to Go

#14
post #12
post #11

Great work :). Go doesn't have TCO. That means functional languages (no for loops) could blow up the stack. How did you solve that?

You can just compile any tail recursive function to a function with a loop and no recursion.

This is in fact how Elm does it! Tail call recursion compiles to a while loop.

Re: Sky – an Elm-inspired language that compiles to Go

#15

That's two new languages compiling to Go making HN frontpage in as many days. It seems people like everything about Go except the language itself. Me? I like everything about Go including the language, these transpiled languages are interesting though. But I keep wondering if they could integrate at a lower-level than the source code. Like how JVM languages integrate at the bytecode level, or LLVM languages at the LL…

What was the other one?

I'm working on a language that transpiles to Zig with a custom Go-like runtime (and no garbage collector, Rust-style Affine movement instead).

Sky seems quite cool, as it's additive to Go in interesting ways.

I originally considered keeping the GC and just transpiling to Go so I didn't need to write a Runtime.

Go rules! It really does. But I HATE writing/reading Go.

So I'm glad more people are doing this!

Re: Sky – an Elm-inspired language that compiles to Go

#16
I will add this to my list of Elm-inspired tools that call to mind Brian Eno's quip about the first Velvet Underground album: "I think everyone who bought one of those 30,000 copies started a band!" With Elm it feels like it's 1% of Elm users creating a language.

https://quoteinvestigator.com/2016/03/01/velvet/

Re: Sky – an Elm-inspired language that compiles to Go

#17
First - awesome job. Congrats. Self hosting is an accomplishment!

But I'm curious to get your thoughts on the process in hindsight.

I understand why it's valuable: to cast a wide net in catching bugs and give a good signal that your language is generally "ready".

I'm working on a similar language, but worried about going down the self-hosting path, as I think it'd slow me down rather than speed me up.

How did it work for you?

Re: Sky – an Elm-inspired language that compiles to Go

#18
post #9
post #4

Functional languages have some good and some bad features and there's no reason to copy them all. For example, you don't need to have a Hindley-Milner type system (bidirectional is better) or currying just because it's a functional language.

We need more pragmatic languages. E.g. Erlang and Elixir are functional, but eschew all the things FP purists advocate for (complex type systems, purity, currying by default etc.)

ocaml has a complex type system but it's also very pragmatic in that it doesn't force you into any one paradigm, you can do whatever works best in a given situation. (scala arguably goes further in the "do whatever you want" direction but it also dials the complexity way up)

Re: Sky – an Elm-inspired language that compiles to Go

#19
Somewhat unrelated to the language itself:

> The compiler bootstraps through 3+ generations of self-compilation.

I guess it applies to any language compiler, but f you are self-hosting, you will naturally release binary packages. Please make sure you have enough support behind the project to setup secure build pipeline. As a user, we will never be able to see something even one nesting-level up.

Re: Sky – an Elm-inspired language that compiles to Go

#20

That's two new languages compiling to Go making HN frontpage in as many days. It seems people like everything about Go except the language itself. Me? I like everything about Go including the language, these transpiled languages are interesting though. But I keep wondering if they could integrate at a lower-level than the source code. Like how JVM languages integrate at the bytecode level, or LLVM languages at the LL…

What was the other one? I'm working on a language that transpiles to Zig with a custom Go-like runtime (and no garbage collector, Rust-style Affine movement instead). Sky seems quite cool, as it's additive to Go in interesting ways. I originally considered keeping the GC and just transpiling to Go so I didn't need to write a Runtime. Go rules! It really does. But I HATE writing/reading Go. So I'm glad more people are…

https://lisette.run/
Post reply on HN