v1.9.0
CHANGES:
-
Typing:
typeabbrevdeclarations are now taken into account and unfolded
by the compiler. The type checker refolds abbreviations
when printing error messages with the following caveat: when two type
abbreviations can be refolded the last declared one wins.
-
Compiler:
@macroare no more accepted in types, sincetypeabbrevprovides the
same functionality.- fix clash between builtin names and type names
accumulateis idempotent: accumulating the same file a second time
has no effect.
-
FFI:
- built in predicate are allowed to not assign (not produce a value) for
output and input-output arguments. - input-output arguments are forced to be
Conversion.tof type'a ioarg,
and recommended to wrap any nested type not able to represent variables
inioarg. Egint optionshould beint ioarg option ioarg. In this
way one can safely call these builtins with non-ground terms, such as
some _, for example to assert the result is notnonebut without
providing a ground term such assome 3. MLDatadeclarations forOpaqueDataare no more named using a macro
but rather using a type abbreviation. This can break user code. The fix
is to substitutie@myopaquetypewithmyopaquetypeeverywhere.
- built in predicate are allowed to not assign (not produce a value) for
-
Stdlib:
diagnosticdata type to be used as anioargfor builtins that can fail
with a relevant error message. On the ML side one can usedElpi.Builtin.mkOK
andElpi.Builtin.mkERROR "msg"to build its values.std.assert-ok!,std.forall-ok,std.do-ok!,std.lift-okand
std.while-ok-do!commodity predicates.- All operators for
calc(infix_ is _) now come with a type declaration.