Roc – A fast, friendly, functional language
Roc is a new fast, purely functional programming language, heavily inspired by Elm and ML-family languages, that aims to combine strong static typing and managed effects with Go-like compilation speed and performance. Commenters praise its unusually polished website, inline REPL, and clear design goals (speed, friendliness, simplicity), while highlighting technical ideas such as compile-time reference counting (Perceus), an effect system called “abilities,” and a platform-based FFI model. Some remain cautious due to past governance and community issues around Elm and the uncertainty of adopting a young language with a small ecosystem, but others see Roc as a promising candidate for making pure functional programming more practical and mainstream.
Overall reception & website
- Many respondents find Roc interesting and modern, with strong enthusiasm from fans of functional languages.
- The new website is widely praised: clear, sleek, with an inline REPL, short guided tutorial, and deep explainer pages for “fast”, “friendly”, and “functional”.
- Several wish more languages matched this onboarding quality.
Language goals and design
- Key selling points highlighted:
- Purely functional with strict evaluation.
- Focus on very fast compiled code via aggressive optimization and “opportunistic” in-place mutation.
- Static reference counting (Perceus-style) to avoid GC while keeping semantics simple.
- Managed effects (“Tasks” / abilities), isolating side effects and improving testability.
- Platform abstraction and declarative imports are seen as interesting but not fully understood yet.
- Roc can sometimes run code with certain type errors if those paths aren’t executed, seen as useful for refactoring.
Type system, macros, and ergonomics
- Types are fully inferred; annotations are optional but supported. Some argue this can hurt error locality and prefer annotating at least function boundaries.
- Roc aims for simplicity over highly expressive features like higher-kinded types.
- Plan is not to support macros, largely to keep editor tooling simpler; some see this as a major limitation for metaprogramming.
- Syntax reactions are mixed: backslash for lambdas and interpolation, whitespace significance, and camelCase are disliked by some.
Tooling, FFI, and implementation
- Compiler is written in Rust; standard library in Zig.
- An LSP-based language server exists; a bespoke IDE has been deprioritized in favor of multi-editor support.
- C FFI exists but is routed through “platforms” rather than arbitrary per-package bindings.
Comparisons to other languages
- Frequently compared to Elm, Haskell, OCaml/ML, Koka, Rust, Go, F#, Gleam, and various Lisps.
- Some view Roc as a practical, strict, simpler Haskell-like language influenced by Elm and Koka.
- Skeptics question whether it offers enough beyond existing ecosystems, especially given its young library landscape.
Community and history concerns
- Several comments revisit past governance and community issues around Elm, expressing distrust and reluctance to invest in another young language from related circles.
- Others emphasize apologies, second chances, and note that Roc’s current community feels welcoming.
- Some see the recurring drama itself as undesirable and prefer to focus on technical aspects.