mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-17 02:13:54 +00:00
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.
209 lines
7.6 KiB
Plaintext
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)))
|