Welcome to the Sky tour

Sky is a pure-functional, Elm-family language that compiles to typed Go. One language for the whole stack — web apps, APIs, CLIs, terminal UIs, desktop — with a single promise: if it compiles, it works. No null, no user-written FFI, no runtime panics from well-typed code.

This tour teaches Sky from scratch. Each lesson is short: one idea, a small example, and a note or two. Work through it in order — every lesson builds on the one before. You can read it without installing anything, but you'll learn more if you follow along in a real project (the next lesson sets that up in a minute).

How the tour is laid out

When you want to look something up rather than learn in order, the API reference has every standard-library module (searchable), and the guides go deep on each topic.

The shape of a Sky program

Here's a whole program. Don't worry about the details yet — just notice the shape: a module header, some imports, a type, a function, and main.

module Main exposing (main)

import Sky.Core.Prelude exposing (..)
import Std.Log exposing (println)

type Msg = Increment | Decrement

update : Msg -> Int -> Int
update msg count =
    case msg of
        Increment -> count + 1
        Decrement -> count - 1

main =
    println (String.fromInt (update Increment 0))

If you've written Elm, this is home. If you haven't, the next few lessons walk through every piece. Ready?

Start → Your first app