Sat Jan 22 10:24:41 EST 2011
First class signatures
What I want is to combine a model@ unit and a num@ unit and run an
analysis. This can be done by creating a compound unit that returns
an expression, link it, and use `invoke-unit' to obtain the expression.
(unit (import) (export) 123))
# (invoke-unit test@) => 123
Linking a unit works as follows. For each unit in the composition,
define a link-id for each export signatures (capital letters below).
These link-id are used only during linking. I believe these are
distinguished from signature names to allow for multiple instances of
the same signature.
(export DOMAIN MODEL)
;; exports unit imports
(link [((DOMAIN : num^)) num-anf@ MODEL]
[((MODEL : example^)) example@ DOMAIN])))
Ok, it's working for staapl/absint. The following instantiates the
`run' function defined in the example@ unit over 3 different domains:
((num-run num-anf@ example@) 1 2)
((num-run num-expr@ example@) 1 2)
((num-run num-eval@ example@) 1 2)