Make cord.foldl and cord.foldl_pred tail-recursive. This may be
expected by users as cords are often used as a replacement for lists.
Also make the recursive calls in cord.foldr and cord.foldr_pred amenable
to last call optimisation. However, they still use stack space
proportional to the size of the input due to calling list.foldr.
library/cord.m:
As above.
tests/hard_coded/test_cord2.m:
tests/hard_coded/test_cord2.exp:
Add tests for fold order.
NEWS:
Announce the change.
Test the recently changed functions more comprehensively:
cord.list, cord.rev_list, cord.cord_list_to_cord, cord.cord_list_to_list.
The existing test_cord.m is deficient, and did not reveal a bug in the
previous implementation of cord.rev_list (the non-tail-recursive one).
tests/hard_coded/Mmakefile:
tests/hard_coded/test_cord2.exp:
tests/hard_coded/test_cord2.m:
Add test case.