Sigma

Algebraic pure functional language Sigma, implementing Idris-like syntax and sematics, rewritten in Elixir for Erlang/OTP concurrency model.

module Main where import Prelude import Effect.Console (log) main :: Effect Unit main = do log "Hello, Sigma!" log "Dependently-typed • Concurrent • Distributed"

Features

Power & Beauty

Write pure functional code. Compile to highly scalable, fault-tolerant Erlang bytecode.

Full Type Safety

Compile-time type checking and inference. Algebraic data types, pattern matching, type classes.

Effectful Concurrency

Actors, OTP behaviours, supervision trees — all with PureScript syntax.

Announcement

$ mix deps.get
$ mix sig.repl
Sigma Interactive REPL
Type :quit to exit, :reset to clear bindings
Library loaded. Ready.
σ> import Control.Process
σ> getSelf
#PID<0.94.0>
σ> import Control.Application
σ> loadedApplications
[
  %{name: :logger, vsn: ~c"1.18.4", desc: ~c"logger"},
  %{name: :mix, vsn: ~c"1.18.4", desc: ~c"mix"},
  %{name: :iex, vsn: ~c"1.18.4", desc: ~c"iex"},
  %{name: :phi, vsn: ~c"0.3.1", desc: ~c"The Phi Programming Language",
  %{name: :ex_unit, vsn: ~c"1.18.4"', desc: ~c"ex_unit"},
  %{name: :stdlib, vsn: ~c"7.0.2", desc: ~C"ERTS CXC 138 10"},
  %{name: :crypto, vsn: ~c"5.6"', desc: ~c "CRYPTO" },
  %{name: :compiler, vsn: ~c"9.0.1", desc: ~C"ERTS CXC 138 10"},
  %{name: :elixir, vsn: ~c"1.18.4", desc: ~c"elixir"},
  %{name: :kernel, vsn: ~C"10.3.2"', desc: ~C"ERTS CXC 138 10"}
]

Open Source