B-Prolog is a versatile and really efficient constraint logic programming (CLP) system! B-Prolog is being brought to you by Afany Software (New York), KLS (Tokyo), and NandaSoft (Nanjing).
The birth of CLP is a milestone in the history of programming languages. CLP combines two declarative programming paradigms: logic programming and constraint solving.
The declarative nature has proven appealing in numerous applications including computer-aided design and verification, database, data mining, software engineering, optimization, configuration, graphical user interface, and language processing.
One of B-Prolog goals is to enhance the productivity of software maintainability and development.
In addition, because of the availability of efficient constraint-solving, memory management, and compilation techniques, CLP programs can be more efficient than their counterparts written in procedural languages.
What`s New in This Release: [ read full changelog ]
· ISO-related (updated to pass most of Ulrich Neumerkel`s test cases)
· `|` becomes a permanent operator. The following operators are permanent and cannot be redefined: `[]`, `{}`, `,`, `.`, `:-`, and `|`.
· writeq is redefined to be (almost?) compliant with the standard.
· New arithmetic functions: atan2, xor, and div.
· A change in the tokenizer makes it possible to parse terms such as 9..-1..1.
· The notation Begin..Step..End is accepted in domain declarations. E.g., X :: 1..2..10.
The notation Begin..Step..End is accepted in foreach and list comprehensions. Examples:
· foreach(X in 10..-1..1, writeln(X)).
· L @= [X : X in 10..-1..1].
· foreach(X in 0..0.1..1, writeln(X)).
· L @= [X : X in 0..0.1..1]
· Array access and list comprehension notations can occur on both sides of X @= Y and X @:= Y.
· New labeling options in labeling(Opts,Vars): degree, down, updown, split, and reverse_split.
· New indomain built-ins: indomain_down(Var), indomain_updown(Var), indomain_split(Var), and indomain_reverse_split(Var)....