TL;DR

「速く、親しみやすい、関数型」をうたう関数型のプログラミング言語。機械語か WebAssembly にコンパイルされる。

仕組み

ビルドも実行も速くなるように設計されている。構文、意味論、付属のツールは、どれも使いやすさを重視している。言語は少数の単純な要素で構成され、関数型だけの単一パラダイムである。コンパイラ全体がブラウザ上で動くので、サーバなしでプレイグラウンドを使える。

例

未完了の ToDo を絞り込んで表示するコードは次のようになる。

print_remaining! = |todos|
    todos
        .keep_if(|todo| todo.status != Done)
        .for_each!(|todo| echo!("- ${todo.name}\n"))

Apple Silicon の Mac には、当時は次の手順で入れた(バージョンは alpha3)。

  1. リリースからアーカイブを取ってきて展開する

    curl -OL https://github.com/roc-lang/roc/releases/download/alpha3-rolling/roc-macos_apple_silicon-alpha3-rolling.tar.gz
    tar xf roc-macos_apple_silicon-alpha3-rolling.tar.gz
  2. Homebrew で zstd を入れる(brew install zstd)

  3. .zshrc で展開したディレクトリを PATH に足す

    export PATH=$PATH:$HOME/roc_nightly-macos_apple_silicon-<Roc のバージョン>
  4. roc version で動作を確かめる

エディタの拡張機能は公式サイトにまとまっている。

出典