Sky-lang and vibe coded languages

I found this elm-inspired language on my research on vibe coded languages:

I know there have been various attempts to recreate other elm-lang-like languages and I have also personally updated the elm-compiler with claude code to produce optimized code and to tweak the language itself.

{ model | value.sub.sub.sub = 1 }

-- or

{ model | value.sub.sub.sub <- \x -> x + 1

-- or

{ model | value.sub.{
   value = 1, value = 33
}}

in order to reduce boilerplate code … maybe this could be an extension for the next version of elm :wink:

However #1, AI makes it quite simple to reason about language concepts instead of dealing with compiler and syntax details. If you check some other resources of the sky-language, the developer seems to be right. When AI becomes a developer it is better to use languages that give you more guarantees and better compile time errors. Not a Python fix that breaks something else somewhere. Elm could become more dominant, if it would also compile to nodejs with access to the file system …

However #2, what is also interesting about the sky-language is, that it does not deal with the idea of “defining” a single program that runs on one machine, where you have to hardwire a communication a database, program the database, etc. It is more about infrastructure. So what I was thinking about, was if we could reinterpret programming similarly. If I think about a program, then distribution is particularly of interest for me, but there is lots of stuff and effort that I have to program in order to establish a communication between nodes, how data gets serialized, synchronized, etc. I was just thinking, could something like this, not also be handled by an elm-like language or by the next version of elm, since there is a new release :wink: I was thinking about something like this, if you define a chat app:

type alias Model =
    { settings: Persistent Settings
    , editor: Shared Eventual (Lww String)
    , users : Shared Eventual (AddWinsSet UserId)
    , messages :
        SharedPersistent Causal
            (Sequence MessageId Message)
    }

During compilation, you can specify one or multiple communication options and the compiler chooses one that fits to your definitions about consistency, etc. Thus, programming is still about single programs with a “single-threaded logic”, but the result would be distributed with guarantees.

I am just thinking out loud :wink:

Maybe not exactly what you’re describing here, but have you seen https://lamdera.com/ ? I feel like it’s almost what you are refering to. It’s a great (dare I say amazing?!) way to write Elm code without worrying about the “infrastructure”, as you call it, but with a model of network / distribution baked in that is really nice to reason about. Highly recommend checking it out, it’s really fun!

Apart from that currently not able to look into Sky or the linked video, so can’t comment on that, sorry :sweat_smile:

Have you looked at https://elm-pages.com/ or https://gren-lang.org/? Both compile to Node and allow for interacting with the file system.

I know lambdera, as far as I know it uses one setup only not the same as the infrastructure … I have always to rely on CRDTs for my distributed setups. CRDTs like Yjs or Automerge are divas still generating conflicts, which sometimes behave somehow strange … I was just thinking if this communication overhead also with different types of consistency and communication layers could be handled by a language in the future …

Yes, but not tested by myself so far … I was just thinking about other concepts than “classical” programming … such that if a variable is defined as persistent, then it is automatically store and restored and if it defined as shared, then it will be automatically synchronized between peers with different guarantees … I was just thinking how the next version of elm or another language might look like …