OCaml with macros
Branch: macros_with_la…
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
asmcomp
asmrun
boot
bytecomp
byterun
compilerlibs add a file in compilerlibs to make git happy Feb 19, 2016
config
debugger
driver
emacs
experimental Add Filename.extension and Filename.remove_extension. Jul 9, 2016
flexdll @ 3453457
lex fix ocamllex -ml, works with -safe-string option (#750) Aug 26, 2016
man
manual
middle_end
ocamldoc
otherlibs
parsing
stdlib
testsuite
tools
toplevel
typing
utils Clean up warning deactivation Nov 17, 2016
yacc
.depend Remove odd dependency using forward declaration Feb 16, 2017
.gitattributes
.gitignore
.gitmodules
.mailmap
.merlin
.ocp-indent
.travis-ci.sh
.travis.yml
CONTRIBUTING.md
Changes Update Changes Oct 25, 2016
INSTALL.adoc
LICENSE
Makefile
Makefile.nt
Makefile.shared
Makefile.tools
README.adoc
README.win32.adoc
VERSION
appveyor.yml
appveyor_build.sh add copyright headers to appveyor files May 17, 2016
configure

README.adoc

Build status: status.

OCaml macros

Overview

This is an experimental implementation of OCaml macros, originally designed by Leo White and Jeremy Yallop (original paper). The best place to learn more is probably this introduction post.

The current default branch is macros_with_lambda_quotes, which will eventually become the only implementation. However, for a nicer printing of quotes, you may want to use the legacy branch macros_old until prettier printing is implemented in this branch.

Installation

Installation instruction are the same as for the standard OCaml distribution. You can find a few examples of what is possible in the links above, or on the macros-examples repo. You can also take a look at the testsuite/tests/macros/ directory.

Installing OPAM packages

Most packages should compile fine, but causes that may break your packages include:

  • a use of the reserved words static or macro as an identifier;

  • a use of $ as a regular operator.

If you need to install Camlp4, you will have to pin it to this repository. Please be aware that this version of Camlp4 is only provided for backward-compatibility and can only generate "pre-macro" OCaml, i.e. it cannot generate any of the macro constructs.

Contributing

You are very welcome to try out macros. Please do report any bugs or inconvenience by opening an issue on this repo.

Pull requests

Found a bug and know how to fix it? We certainly appreciate pull requests. If you plan on making big changes, please file an issue first to discuss why theses changes are needed.

List of Contributors

The implementation of macros is an OCaml Labs research project.

Main collaborators:

  • Olivier Nicole, main developer

  • Leo White, quoting library, original design and supervision

  • Jeremy Yallop, original design and supervision

  • Oleg Kiselyov, developer of BER MetaOCaml, from which macros are inspired

  • Gemma Gordon, project manager