---
key: pl/rascal
kind: plang
name: "Rascal"
url: https://plangs.page/rascal
---

# Rascal

> Domain-specific language for metaprogramming and implementing domain-specific languages.

Domain-specific language for metaprogramming and language-oriented programming, which includes tasks like static code analysis, program transformation, program generation, and the implementation of domain-specific languages. It serves as a general meta language without bias towards any specific software language. Rascal incorporates elements from both relational calculus and term rewriting, while its syntax and semantics are a blend of procedural (imperative) and functional programming.

## Facts

- Appeared: 2009
- Homepage: https://www.rascal-mpl.org/
- GitHub: https://github.com/usethesource/rascal
- Languish ranking: #209

## Relationships

### Paradigms

- [Declarative](https://plangs.page/paradigm/declarative)
- [Functional](https://plangs.page/paradigm/functional)
- [Imperative](https://plangs.page/paradigm/imperative)
- [Lang-Oriented](https://plangs.page/paradigm/language-oriented)
- [Scripting](https://plangs.page/paradigm/scripting)

### Platforms

- [Apple](https://plangs.page/platform/apple)
- [Cross-Platform](https://plangs.page/platform/cross)
- [Linux](https://plangs.page/platform/linux)
- [Windows](https://plangs.page/platform/windows)

### Type Systems

- [Inferred](https://plangs.page/type-system/inferred)
- [Static](https://plangs.page/type-system/static)
- [Strong](https://plangs.page/type-system/strong)

### Written With

- [Java](https://plangs.page/java)

### Licenses

- [BSD](https://plangs.page/license/bsd)
- [EPL](https://plangs.page/license/epl)

### Tags

- [Data Analysis](https://plangs.page/tag/analysis)
