# Roc

> functional programming language

**Wikidata**: [Q124813537](https://www.wikidata.org/wiki/Q124813537)  
**Source**: https://4ort.xyz/entity/roc

## Summary
Roc is a functional programming language designed for building software applications. It emphasizes a programming paradigm based on functional principles and features a strong type system with static typing and type inference. The language is open-source, licensed under the Universal Permissive License, and is actively developed with influences from languages like Elm.

## Key Facts
- **Classification:** Roc is categorized as a functional programming language.
- **Typing Discipline:** It utilizes static typing and inference typing.
- **License:** The language is distributed under the Universal Permissive License.
- **Influences:** Roc's design has been influenced by the Elm programming language (as well as Wikidata entities Q575650 and Q34010).
- **Website:** The official website is located at `https://www.roc-lang.org/`.
- **Source Code:** The development repository is hosted on GitHub at `https://github.com/roc-lang/roc`.
- **Social Media:** The project maintains a Twitter presence under the handle `@roc_lang`, which was established in September 2020.
- **Aliases:** The language is also referred to as "RocLang" and "Roc language."

## FAQs
### Q: What kind of typing system does Roc use?
A: Roc employs a static typing discipline, meaning type checking is performed at compile time rather than runtime. It also features inference typing, allowing the compiler to deduce types automatically without explicit annotations.

### Q: Under which license is Roc released?
A: Roc is released under the Universal Permissive License (UPL). This is a permissive free-software license that allows users to use, modify, and distribute the software with minimal restrictions.

### Q: Where can the source code for Roc be found?
A: The source code for Roc is publicly hosted on GitHub. The repository is located at `https://github.com/roc-lang/roc` and contains the qualifiers related to the platform (Wikidata Q186055) and license (Wikidata Q364).

## Why It Matters
Roc matters in the software development landscape as a modern contribution to the functional programming paradigm. By leveraging static typing combined with inference typing, it aims to provide the safety and reliability of strict compile-time checks while reducing the boilerplate code often associated with statically typed languages. This balance seeks to offer developers a tool that is both robust and ergonomic for application building.

The language is significant for its explicit lineage from Elm, suggesting a design philosophy focused on simplicity and developer experience, common traits in the Elm ecosystem. As an open-source project under the Universal Permissive License, it encourages broad adoption and community contribution without the legal complexities of more restrictive licenses. Its presence on GitHub and establishment of a dedicated social media identity in 2020 indicate an active, evolving project intended to address contemporary challenges in functional application development. For developers interested in the evolution of functional languages that prioritize type safety and inference, Roc represents a relevant and accessible case study.

## Notable For
- **Functional Paradigm:** Being a dedicated functional programming language in a landscape often dominated by multi-paradigm tools.
- **Type Inference:** Offering advanced inference typing capabilities alongside static type checking.
- **Elm Lineage:** Being distinctly influenced by Elm, inheriting design philosophies focused on friendly compiler errors and simplicity.
- **Permissive Licensing:** Using the Universal Permissive License, which facilitates easy commercial and personal use compared to copyleft licenses.

## Body
### Design and Typing
Roc is defined strictly as a functional programming language. Its architecture is built upon the principles of functional programming, avoiding shared state and mutable data common in imperative languages.

The language employs a specific typing discipline consisting of:
- **Static Typing:** Types are checked during compilation.
- **Inference Typing:** The compiler automatically deduces the types of expressions, reducing the need for manual type annotations.

### Technical Lineage
The design of Roc is not isolated; it acknowledges specific influences from prior art in programming language theory. The structured data explicitly cites "Elm" as a predecessor. Additionally, it cites influences from Wikidata entities Q575650 and Q34010, indicating a theoretical foundation rooted in established programming language families.

### Project Governance and Availability
Roc is a copyrighted entity but is freely available to the public. Key resources and identifiers include:
- **License:** Universal Permissive License.
- **Repository:** Hosted on GitHub (`roc-lang/roc`).
- **Official Site:** `https://www.roc-lang.org/` (English).

The project established its public social media identity via the Twitter handle `roc_lang` starting in September 2020.