The pec package

The intent of pec is to provide a drop-in replacement for C, but with modern language features. Pec is a procedural language with a functional/declarative feel. Programming in pec is very similar to monadic programming in Haskell. The primary use case for pec is to provide a productive environment for writing safe, efficient, embedded applications.

Maintainer's Corner

Readme for pec-0.2.3

Introducing the pec language and pec embedded compiler.
The intent of pec is to provide a drop-in replacement for C, but with
modern language features. Pec is a procedural language with a
functional/declarative feel. Programming in pec is very similar to
monadic programming in Haskell. The primary use case for pec is to
provide a productive environment for writing safe, efficient, embedded
applications.
Feature list
- Easy C integration
- No garbage collection
- Strong typing with Hindley-Milner type inference
- Safe pointers, no indexing out of bounds
- Variants, arrays, tuples, records, arbitrary sized integers
- User defined, polymorphic data structures
- Parametric polymorphism, limited ad-hoc polymorphism
- Modules
- Compiles to C and LLVM
- Haskell-ish syntax/layout
- BSD license
Building
- type 'make'
- resolve all hackage dependencies
- type 'make' again
- go and get a cup of coffee :)
Pec (the language and the compiler) is in the alpha stage of
development. The compiler is implemented in Haskell and has a very
small codebase (thanks to several existing Haskell tools/libraries).
You can download and install pec via cabal or access the git
repository on github (git@github.com:stevezhee/pec.git). You'll need
to have a c compiler installed to build the examples.
Any feedback on the design and/or implementation of pec would be
greatly appreciated :)
Thanks,
Brett
brettletner at gmail dot com