Estimated hours taken: 0.1
library/relation.m:
Remove a stray `%'.
- % symmetric closure % is the same as turning
+ % symmetric closure is the same as turning
Estimated hours taken: 3
relation__rtc was just plain broken. Rather than try to fix an
algorithm which I pulled out of an obscure paper some years ago, it's
now replaced with a slightly less efficient algorithm which is much
easier to understand.
library/relation.m:
Changes detailed above.
tests/Makefile:
tests/rtc_bug.m:
tests/rtc_bug.exp:
Test case for the above change.
tests/relation_test.m:
tests/relation_test.exp:
Change in output format to make debugging easier.
Estimated hours taken: 2
library/relation.m:
Add new predicate relation__add_values.
Implement the previously commented-out predicates
relation__from_assoc_list and relation__compose.
Change relation__to_assoc_list so that it returns
an assoc list of values rather than an assoc list
of relation_keys.
NEWS:
Document the above changes.
tests/general/Mmakefile:
tests/general/relation_test.m:
tests/general/relation_test.exp:
Add a few tests of the relation module.
Estimated hours taken: 0.5
library/*.m:
compiler/*.m:
Undo Zoltan's bogus update of all the copyright dates.
The dates in the copyright header should reflect the years
in which the file was modified (and no, changes to the
copyright header itself don't count as modifications).
Estimated hours taken: 0.2
library/relation.m:
Bug fix: When computing an RTC, ensure that the new relation
being created has the correct domain information by copying
this from the old relation, as opposed to just leaving it
blank.
Estimated hours taken: 3
Enable --warn-interface-imports by default. This was turned off while
list and term were defined in mercury_builtin.m, since it caused many
warnings.
Fix all the unused interface imports that have been added since then.
compiler/options.m:
Enable --warn-interface-imports by default.
compiler/module_qual.m:
Fix formatting inconsistencies with module names in warning
messages. (".m" was not appended to module names if there was
only one module).
compiler/*.m:
library/*.m:
tests/invalid/type_loop.m:
tests/warnings/*.m:
Remove usused interface imports, or move them into
implementation (mostly bool, list and std_util).
Estimated hours taken: 5
Design change to relation.m to fix a MAJOR shortcoming. Relations
now require the domain to be entered explicitly
fixes a known bug where performing a topological sort in certain
situations resulted in not all elements appearing in the sort.
compiler/relation.m:
Added:
Type relation_key/0.
relation__search_element/3, relation__add_element/3,
relation__lookup_element/3, relation__search_key/3,
relation__lookup_key/3
Updated to use relation_keys:
relation__add/4, relation__add_assoc_listi/4,
relation__remove/4, relation__remove_assoc_list/3,
relation__lookup/3, relation__reverse_lookup/3,
relation__lookup_from/3, relation__lookup_to/3,
relation__to_assoc_list/2, relation__dfs/3,
relation__dfsrev/3, relation__dfs/2, relation__dfsrev/2,
relation__dfs/5, relation__dfsrev/5, relation__components/2,
relation__cliques/2
Estimated hours taken: 0.5
Changes to the interface of the relation module so that one can use a
depth first search in a more flexible manner.
library/relation.m:
Added predicate relation__dfs/5 and relation__dfsrev/5 which allows one
to do a dfs from a node with a with certain nodes marked as visited.
Moved relation__dfs/2 and relation__dfs/2 to the interface. These
return a dfs ordering of a relation.
Estimated hours taken: 10
Debug and fix of relation__cliques.
library/relation.m:
Changed relation__dfs so that it does its depth first search in
the manner relation__cliques expects.
Added relation__is_dag which tests if a relation is a dag.
Estimated hours taken: 3
relation.m
New implementation of the identification of stronly connected
components. Improves the speed of the profiler by about a factor
of 2.
See relation__cliques for details of the algorithm.
varset:
Add some new predicates for the excess assignment pass.
std_util, assoc_list:
Move predicates for associative lists to a new module.
*.m:
Import assoc_list.
library/*.m:
Improve the documentation.
Add a "Stability: low/medium/high" comment to all modules,
which describes the stability of the interface to that module.
ops.m:
Add `:' as an infix operator.
require.m:
Implement require/1, since higher-order predicates now work.
term.m:
Use the type `comparison_result' from mercury_builtin.m,
rather than defining an identical type `comparison'.