Files
mercury/tests/hard_coded/ra_list_test.exp
Zoltan Somogyi 9473b939d7 Add more functionality to ra_list.m.
The changes to cord.m and list.m are to reduce unnecessary differences
between cord.m, list.m, and ra_list.m.

library/ra_list.m:
    Add new procedures singleton, is_empty, is_not_empty, is_singleton,
    length, list_to_ra_list, map, foldl and foldr.

    Make ra_list_to_list operate without unnecessary memory allocations.

library/cord.m:
    Add a semidet predicate head as a synonym for get_first.

library/list.m:
    Add a semidet predicate is_singleton.

    Add semidet predicates head and tail next to their semidet function
    versions (which should be deprecated). Document them.

    Add det predicates det_head and det_tail next to their det function
    versions.

    Avoid the overhead of calling a closure used for func-to-pred conversion
    once for each list element in the function versions of foldl and foldr.

    Fix some other documentation.

NEWS:
    Mention the new additions to standard library.

library/term_to_xml.m:
tests/hard_coded/construct_packed.m:
    Avoid ambiguities between function and predicate forms.

tests/hard_coded/ra_list_test.{m,exp}:
    Add tests of length, list_to_ra_list, map, foldl and foldr.
2022-06-12 19:42:47 +10:00

209 lines
7.6 KiB
Plaintext

[1.0]
head: 1.0
tail: []
length: 1
at index0 0: 1.0
at index0 1: _
at index0 2: _
at index0 3: _
at index0 4: _
at index0 7: _
at index0 8: _
at index0 9: _
at index0 14: _
at index0 15: _
at index0 16: _
drop 0: [1.0]
drop 1: []
drop 2: failed
drop 5: failed
drop 9: failed
[2.0, 1.0]
head: 2.0
tail: [1.0]
length: 2
at index0 0: 2.0
at index0 1: 1.0
at index0 2: _
at index0 3: _
at index0 4: _
at index0 7: _
at index0 8: _
at index0 9: _
at index0 14: _
at index0 15: _
at index0 16: _
drop 0: [2.0, 1.0]
drop 1: [1.0]
drop 2: []
drop 5: failed
drop 9: failed
[3.0, 2.0, 1.0]
head: 3.0
tail: [2.0, 1.0]
length: 3
at index0 0: 3.0
at index0 1: 2.0
at index0 2: 1.0
at index0 3: _
at index0 4: _
at index0 7: _
at index0 8: _
at index0 9: _
at index0 14: _
at index0 15: _
at index0 16: _
drop 0: [3.0, 2.0, 1.0]
drop 1: [2.0, 1.0]
drop 2: [1.0]
drop 5: failed
drop 9: failed
[4.0, 3.0, 2.0, 1.0]
head: 4.0
tail: [3.0, 2.0, 1.0]
length: 4
at index0 0: 4.0
at index0 1: 3.0
at index0 2: 2.0
at index0 3: 1.0
at index0 4: _
at index0 7: _
at index0 8: _
at index0 9: _
at index0 14: _
at index0 15: _
at index0 16: _
drop 0: [4.0, 3.0, 2.0, 1.0]
drop 1: [3.0, 2.0, 1.0]
drop 2: [2.0, 1.0]
drop 5: failed
drop 9: failed
[4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
head: 4.0
tail: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
length: 8
at index0 0: 4.0
at index0 1: 3.0
at index0 2: 2.0
at index0 3: 1.0
at index0 4: 4.0
at index0 7: 1.0
at index0 8: _
at index0 9: _
at index0 14: _
at index0 15: _
at index0 16: _
drop 0: [4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 1: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 2: [2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 5: [3.0, 2.0, 1.0]
drop 9: failed
[4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
head: 4.0
tail: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
length: 16
at index0 0: 4.0
at index0 1: 3.0
at index0 2: 2.0
at index0 3: 1.0
at index0 4: 4.0
at index0 7: 1.0
at index0 8: 4.0
at index0 9: 3.0
at index0 14: 2.0
at index0 15: 1.0
at index0 16: _
drop 0: [4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 1: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 2: [2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 5: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
drop 9: [3.0, 2.0, 1.0, 4.0, 3.0, 2.0, 1.0]
foldl (should be 10 to 1):
"<ten>"
"<nine>"
"<eight>"
"<seven>"
"<six>"
"<five>"
"<four>"
"<three>"
"<two>"
"<one>"
foldr (should be 1 to 10):
"<one><two><three><four><five><six><seven><eight><nine><ten>"
construction 1
cons(1, leaf("one"), nil)
cons(1, leaf("one"), nil)
construction 2
cons(1, leaf("one"), nil)
cons(1, leaf("one"), cons(1, leaf("two"), nil))
construction 3
cons(3, node("one", leaf("two"), leaf("three")), nil)
cons(3, node("one", leaf("two"), leaf("three")), nil)
construction 4
cons(1, leaf("one"), cons(3, node("two", leaf("three"), leaf("four")), nil))
cons(1, leaf("one"), cons(3, node("two", leaf("three"), leaf("four")), nil))
construction 5
cons(1, leaf("one"), cons(3, node("three", leaf("four"), leaf("five")), nil))
cons(1, leaf("one"), cons(1, leaf("two"), cons(3, node("three", leaf("four"), leaf("five")), nil)))
construction 6
cons(3, node("one", leaf("two"), leaf("three")), nil)
cons(3, node("one", leaf("two"), leaf("three")), cons(3, node("four", leaf("five"), leaf("six")), nil))
construction 7
cons(7, node("one", node("two", leaf("three"), leaf("four")), node("five", leaf("six"), leaf("seven"))), nil)
cons(7, node("one", node("two", leaf("three"), leaf("four")), node("five", leaf("six"), leaf("seven"))), nil)
construction 8
cons(1, leaf("one"), cons(7, node("two", node("three", leaf("four"), leaf("five")), node("six", leaf("seven"), leaf("eight"))), nil))
cons(1, leaf("one"), cons(7, node("two", node("three", leaf("four"), leaf("five")), node("six", leaf("seven"), leaf("eight"))), nil))
construction 9
cons(1, leaf("one"), cons(7, node("three", node("four", leaf("five"), leaf("six")), node("seven", leaf("eight"), leaf("nine"))), nil))
cons(1, leaf("one"), cons(1, leaf("two"), cons(7, node("three", node("four", leaf("five"), leaf("six")), node("seven", leaf("eight"), leaf("nine"))), nil)))
construction 10
cons(3, node("one", leaf("two"), leaf("three")), cons(7, node("four", node("five", leaf("six"), leaf("seven")), node("eight", leaf("nine"), leaf("ten"))), nil))
cons(3, node("one", leaf("two"), leaf("three")), cons(7, node("four", node("five", leaf("six"), leaf("seven")), node("eight", leaf("nine"), leaf("ten"))), nil))
construction 11
cons(1, leaf("one"), cons(3, node("two", leaf("three"), leaf("four")), cons(7, node("five", node("six", leaf("seven"), leaf("eight")), node("nine", leaf("ten"), leaf("eleven"))), nil)))
cons(1, leaf("one"), cons(3, node("two", leaf("three"), leaf("four")), cons(7, node("five", node("six", leaf("seven"), leaf("eight")), node("nine", leaf("ten"), leaf("eleven"))), nil)))
construction 12
cons(1, leaf("one"), cons(3, node("three", leaf("four"), leaf("five")), cons(7, node("six", node("seven", leaf("eight"), leaf("nine")), node("ten", leaf("eleven"), leaf("twelve"))), nil)))
cons(1, leaf("one"), cons(1, leaf("two"), cons(3, node("three", leaf("four"), leaf("five")), cons(7, node("six", node("seven", leaf("eight"), leaf("nine")), node("ten", leaf("eleven"), leaf("twelve"))), nil))))
construction 13
cons(3, node("one", leaf("two"), leaf("three")), cons(7, node("seven", node("eight", leaf("nine"), leaf("ten")), node("eleven", leaf("twelve"), leaf("thirteen"))), nil))
cons(3, node("one", leaf("two"), leaf("three")), cons(3, node("four", leaf("five"), leaf("six")), cons(7, node("seven", node("eight", leaf("nine"), leaf("ten")), node("eleven", leaf("twelve"), leaf("thirteen"))), nil)))
construction 14
cons(7, node("one", node("two", leaf("three"), leaf("four")), node("five", leaf("six"), leaf("seven"))), nil)
cons(7, node("one", node("two", leaf("three"), leaf("four")), node("five", leaf("six"), leaf("seven"))), cons(7, node("eight", node("nine", leaf("ten"), leaf("eleven")), node("twelve", leaf("thirteen"), leaf("fourteen"))), nil))
construction 15
cons(15, node("one", node("two", node("three", leaf("four"), leaf("five")), node("six", leaf("seven"), leaf("eight"))), node("nine", node("ten", leaf("eleven"), leaf("twelve")), node("thirteen", leaf("fourteen"), leaf("fifteen")))), nil)
cons(15, node("one", node("two", node("three", leaf("four"), leaf("five")), node("six", leaf("seven"), leaf("eight"))), node("nine", node("ten", leaf("eleven"), leaf("twelve")), node("thirteen", leaf("fourteen"), leaf("fifteen")))), nil)
construction 16
cons(1, leaf("one"), cons(15, node("two", node("three", node("four", leaf("five"), leaf("six")), node("seven", leaf("eight"), leaf("nine"))), node("ten", node("eleven", leaf("twelve"), leaf("thirteen")), node("fourteen", leaf("fifteen"), leaf("sixteen")))), nil))
cons(1, leaf("one"), cons(15, node("two", node("three", node("four", leaf("five"), leaf("six")), node("seven", leaf("eight"), leaf("nine"))), node("ten", node("eleven", leaf("twelve"), leaf("thirteen")), node("fourteen", leaf("fifteen"), leaf("sixteen")))), nil))
construction 17
cons(1, leaf("one"), cons(15, node("three", node("four", node("five", leaf("six"), leaf("seven")), node("eight", leaf("nine"), leaf("ten"))), node("eleven", node("twelve", leaf("thirteen"), leaf("fourteen")), node("fifteen", leaf("sixteen"), leaf("seventeen")))), nil))
cons(1, leaf("one"), cons(1, leaf("two"), cons(15, node("three", node("four", node("five", leaf("six"), leaf("seven")), node("eight", leaf("nine"), leaf("ten"))), node("eleven", node("twelve", leaf("thirteen"), leaf("fourteen")), node("fifteen", leaf("sixteen"), leaf("seventeen")))), nil)))