Rethink Object-Oriented Programming
# Refinement of the class of integers: adding a new method.
class Int
def fibonacci: Int
do
if self < 2 then
return 1
else
return (self-1).fibonacci + (self-2).fibonacci
end
end
end
let i := 23
print(i.fibonacci)
What is PRM?
PRM stands for "Program with Refinement and Modules". It is an object-oriented programming language. The goal of PRM is to propose a statically typed programming language where structure is not a pain.
Feature Highlights
- Full object and powerful multiple inheritance
- Modules and Refinement: redefine existing classes
- Clear syntax: no verbosity nor cryptic statement
- Painless static types: static typing should help programmers
- More features...
Compiler
The current PRM compiler prototype implements better compilation techniques and allow separate compilation of modules.
It is currently written in Ruby and generates C and assembly files.
Getting Started
Get PRM from its subversion repository:
$ svn checkout http://svn.gna.org/svn/prm/trunk prm
Compile a program:
$ prm/bin/prmc prm/tests/example_hello_world.prm
Execute the program:
$ ./example_hello_world
Participate
PRM is a target framework for novel compilation techniques and object-oriented research. Currently, the compiler and others tools are actively developed in order to reach fully usable state.
The PRM project is hosted at Gna!. Fell free to report bugs, browse the source code or discuss on the mailing list.
Warning
The PRM language specification is currently unstable. Some large pieces of change may occur.
The prmc compiler is currently a prototype.
Main page
You may want to know more about the PRM language and its compiler and tools.
Download
Previous PRM releases are to much outdated, instead use the subversion repository.
Documentation
The PRM language reference(PDF) is about language syntax classes and modules. The standard library references built-ins and standard classes. For more details, see publications and technical reports.
Contact
PRM is developed at LIRMM by Jean Privat. The dedicated mailing list is prm@lirmm.fr, more infos.
Sponsors
PRM is supported by LIRMM, Université Montpellier II, CNRS, Région Languedoc-Roussillon.
Style from evince web page, images from the Tango Desktop Project.
Optimized for standards.