This tutorial is set up with a Makefile
that can build and run all
tasks. This makefile is also set up to be intelligent in the sense
that it will use Docker if possible (since we suggest that for
ease-of-installation reasons), and otherwise fall back to running
outside of Docker.
Each task has a make
target for building and running, and one target
for building and running automatically as soon as files changed. These
targets are listed under the relevant heading below, and will also be
mentioned during the tutorial sessions.
This tutorial is divide into two parts, one that covers MExpr and one that covers MLang.
All tasks can be found in tutorial1-mexpr.mc
. Relevant make
targets:
make mexpr
builds and runstutorial1-mexpr.mc
make watch-mexpr
automatically runsmake mexpr
every time files change.
All tasks can be found in tutorial1-mlang.mc
. Relevant make
targets:
make mlang
builds and runstutorial1-mlang.mc
make watch-mlang
automatically runsmake mlang
every time files change.
Other relevant files:
tutorial1-mexpr.mc
(include
d intutorial1-mlang.mc
)ast.mc
, defines the AST we manipulate in the taskslib/lambda.mc
, contains language fragments for the lambda-calculus. You should not have to edit this file but you can have a look if you are curious
The first task is Task C at the end of tutorial1-mlang.mc
. This task
uses the same make
targets as Tutorial 1, Part 2.
Remaining tasks can be found in tutorial2-ode.mc
. Relevant make
targets:
make ode
builds and runstutorial2-ode.mc
on all models in themodels/
directory.make watch-ode
automatically runsmake ode
every time files change.
Relevant files and folders:
tutorial1-mexpr.mc
andtutorial1-mlang.mc
, since some work is reused.ast.syn
, this file will describe your syntaxast-gen.mc
, this file is generated from your specification inast.syn
- the folder
models
contains ODE models (.ode
files) and the solution traces for these models (.html
files) as computed by your ODE DSL. To view a solution trace simply open it in a web-browser. You need to refresh your browser if you rebuild/re-run thetutorial2-ode.mc
file. Note that before you have solved Task B all solution traces will be for a hard-coded model that we include to provide some output, even before the backend is complete. lib/ode.mc
, interfaces the ODE solver. You should not have to edit this file but you can have a look if you are curiouslib/lambda.mc
, contains language fragments for the lambda-calculus. You should not have to edit this file but you can have a look if you are curious