ECLiPSe 7.2 Release Notes

Version 7.2 (DRAFT)

Not yet frozen, features may still be added...

Constraint Solvers

library(eplex_highs)
The LP/MIP Solver Interface library(eplex) now also works with the free HiGHS solver.

Other Libraries

New Libraries

Library Enhancements

lib(format)
Complete implementation of traditional format/2,3 predicate, conforming to PIP-0110.
lib(m_tree234)
Implemented iterators and performance improvements.
lib(test_util)
Added features to unit testing library (naming and skipping tests, comparing stream output).

Language Enhancements

Cyclic Terms
The system can now write and read cyclic terms, using attribute notation. In write_term/2,3, this is controlled by the cycles(Bool) option.
	?- X = f(X), write_term(X, [nl]).
	f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(...))))))))))))))))))))

        ?- X = f(X), write_term(X, [cycles, nl]).
	_121{= : f(_121)}

	?- write_term(X{= : f(X)}, [cycles, nl]).
	_150{= : f(_150)}

Built-in Predicates

write_term/2,3, open/4 and set_stream_property/3
The write_term/2,3 built-in understands a number of new options (following PIP-0105). These can also be used to set stream-defaults for other output predicates:
  • anonymous(Vars) - print given variables as _
  • cycles(Bool) - detect and print cyclic terms using attribute syntax
  • float_precision(Prec) - limit number of decimal digits printed in floats
  • integer_base(Base) - base (radix) for integer printing
  • partial(Bool) - if necessary, insert space to separate tokens
  • portable(Bool) - ignore most operators, but keep list syntax
  • spacing(Style) - control layout spacing
  • text_max(Max) - limit print length of atoms and strings
current_prolog_flag/2 and set_prolog_flag/2
These have been moved out of the ISO-compatibility libraries and are now available as ECLiPSe-built-ins. They are simply aliases for get_flag/2 and set_flag/2 -- all flags are now accessible by both sets of predicates, independent of language choice (eclipse_language/iso).
printf/2,3
Accept non-floats in floating point formats (e/E/f/g) and convert via float/2.
read_term/2,3
New options
  • annotated(-AnnTerm) - returns the annotated form of the term read
  • line(-Line) - returns the starting line number of the term read

Miscellaneous