Skip to content

jwoudenberg/roc-awesome

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

Roc Awesome 🤘

A collection of links to awesome roc things.

Building From Source 🏗️

Official Guide - Building From Source

Enter nix shell nix develop

Build roc cli && language server cargo build -p roc_cli --release && cargo build -p roc_lang_srv --release

Roc Packages 📦

Work In Progress

Roc Platforms 🏢

Work In Progress

Other languages & Embedding Examples 🗺

Glue Generation for a platform with roc glue path/to/spec path/to/generated/glue/destination path/to/platform/main.roc

RustGlue.roc: Bindings to Rust

Tooling 🛠️

Experiments 🔭

Language Changes 🧱

Plans roc-lang.org/plans

Task as Builtin Design Proposal

  • Upgrades Task to a builtin unlocking Task.map2, enables concurrent task execution, improves error messages
  • Introduces Stored ability which unlocks; performance, ergonomics, and the ability to test simulated Tasks without actually running their effects this part of the proposal is no longer planned

Module Params Design Proposal

  • Enables platform-agnostic packages which can chain Tasks; all modules become platform-agnostic
  • Guarantees that for a Roc module to perform effects it must declare a module parameter
  • Unlocks simulating effects in tests using expect-sim
  • Unlocks recording effects roc run --record-fx which can be used in tests or replay
  • Enables sandboxing and polyfilling effects for improved interoperability and security

Chaining Syntax and Variation: Chaining with Types

  • Make syntax for I/O in Roc easier to learn for beginners and nicer to read for experienced Roc programmers
  • Improve error messages and permit I/O inside if statements and guards
  • Introduce a ! postfix operator for chaining Tasks, e.g. url = File.readUtf8! path instead of current url <- File.readUtf8 path |> Task.await
  • Introduce a restricted HKP, but only for the new builtin abilities
if File.exists! path then

when File.type! path is 

when foo is
    Blah if File.exists! path -> …

AndThen implements
	andThen : t a, (a -> t b) -> t b
        where t implements AndThen

Map2 implements
	map2 : t a, t b, (a, b -> c) -> t c
        where t implements Map2

Roc Applications 💾

Other

🎄🎁🎄 Advent of Code template and my attempts at AoC

About

Awesome Roc and other things

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published