Robert Strandh [Sun, 19 Jun 2011 04:15:53 +0000]
Updated status to reflect that MERGE has been written.
Robert Strandh [Sun, 19 Jun 2011 04:13:55 +0000]
Remaining special versions of MERGE.
Main function for MERGE.
Robert Strandh [Sun, 19 Jun 2011 01:57:05 +0000]
Updated status to reflect existing condition types.
Robert Strandh [Sat, 18 Jun 2011 01:39:31 +0000]
Four more specialized versions of MERGE.
Robert Strandh [Fri, 17 Jun 2011 23:09:29 +0000]
More specialized versions of MERGE, and more comments.
Robert Strandh [Thu, 16 Jun 2011 03:22:54 +0000]
Finalized docstring for MERGE.
Robert Strandh [Wed, 15 Jun 2011 23:34:46 +0000]
More text in the docstring for MERGE, but it is not finished yet.
Robert Strandh [Tue, 14 Jun 2011 23:18:59 +0000]
Updated status to reflect recent docstrings.
Robert Strandh [Tue, 14 Jun 2011 23:16:28 +0000]
Supplied partial docstring for MERGE.
Robert Strandh [Mon, 13 Jun 2011 23:03:20 +0000]
Supplied docstring for CONCATENATE.
Robert Strandh [Mon, 13 Jun 2011 00:36:34 +0000]
Updated status to reflect the existence of more docstrings.
Robert Strandh [Mon, 13 Jun 2011 00:35:07 +0000]
Supplied docstring for REPLACE.
Robert Strandh [Sun, 12 Jun 2011 02:21:34 +0000]
Supplied docstring for MISMATCH.
Fixed a typo in the docstring for SEARCH.
Robert Strandh [Sun, 12 Jun 2011 00:53:06 +0000]
Added a phrase stating the existence of docstrings.
Robert Strandh [Sun, 12 Jun 2011 00:52:33 +0000]
Fixed a typo in the lambda list of the docstring for REPLACE.
Robert Strandh [Sun, 12 Jun 2011 00:51:21 +0000]
Added MISMATCH to the list of shadowed/exported symbols.
Robert Strandh [Sun, 12 Jun 2011 00:50:28 +0000]
Embryonic definitions of MISMATCH and MERGE, only to get
the docstrings on those definitions.
Robert Strandh [Sat, 11 Jun 2011 07:56:04 +0000]
Replaced the phrase "neither a vector nor a list" (or equivalent)
by "not a sequence" to allow for other sequences than vectors
and lists.
Robert Strandh [Sat, 11 Jun 2011 07:39:48 +0000]
Finalized docstring for SEARCH.
Untabified the code, which generated "false" diff lines.
Robert Strandh [Sat, 11 Jun 2011 00:11:05 +0000]
Embryonic docstrings for MISMATCH, REPLACE, CONCATENATE, and MERGE.
Robert Strandh [Fri, 10 Jun 2011 00:32:14 +0000]
Fixed a few typos.
Supplied embryonic docstring for SEARCH.
Robert Strandh [Thu, 9 Jun 2011 00:33:12 +0000]
Supplied docstrings for SORT and STABLE-SORT.
Robert Strandh [Wed, 8 Jun 2011 23:13:21 +0000]
Fixed minor bugs in *key* and *bounding-indexes*.
Supplied docstring for REDUCE.
Robert Strandh [Tue, 7 Jun 2011 00:11:48 +0000]
Supplied docstrings for REVERSE and NREVERSE.
Robert Strandh [Mon, 6 Jun 2011 22:48:05 +0000]
Supplied docstring for MAP-INTO.
Modified the docstring for MAP so as to make references to
any sequence of SEQUENCES more obvious.
Robert Strandh [Sun, 5 Jun 2011 23:57:16 +0000]
Supplied docstring for MAP.
Robert Strandh [Sat, 4 Jun 2011 00:02:55 +0000]
Finished docstring for SUBSEQ.
Robert Strandh [Fri, 3 Jun 2011 23:54:50 +0000]
Finished docstrings for REMOVE-DUPLICATES and DELETE-DUPLICATES.
Robert Strandh [Fri, 3 Jun 2011 10:45:58 +0000]
Supplied embryonic docstrings for SUBSEQ, REMOVE-DUPLICATES, and
DELETE-DUPLICATES.
Robert Strandh [Fri, 3 Jun 2011 00:58:42 +0000]
Supplied docstring for LENGTH.
Introduced an experimental paragraph "Portability notes" in the
docstring. The idea is that the docstring otherwise reflect a real
implementation and the new paragraph warns the programmer not to rely
on implementation specific behavior.
Robert Strandh [Fri, 3 Jun 2011 00:01:48 +0000]
Supplied a docstring for MAKE-SEQUENCE.
Robert Strandh [Thu, 2 Jun 2011 00:04:38 +0000]
Renamed description of error that might happen about invalid bounding
indexes.
Introduced a description of error that always happens when bounding
indexes are invalid.
Introduced parameter descriptions for just a sequence and just a
sequence index.
Supplied docstrings for ELT and FILL.
Robert Strandh [Wed, 1 Jun 2011 23:23:43 +0000]
Supplied docstring for COPY-SEQ.
Robert Strandh [Wed, 1 Jun 2011 01:21:26 +0000]
Supplied docstrings for NSUBSTITUTE, NSUBSTITUTE-IF,
and NSUBSTITUTE-IF-NOT.
Supplemented the wording about the test being applied in any order,
so that it also mentions that the test can be applied several times
to an element. Added the new wording to places where it was missing.
Robert Strandh [Wed, 1 Jun 2011 00:42:00 +0000]
Supplied docstrings for SUBSTITUTE, SUBSTITUTE-IF,
and SUBSTITUTE-IF-NOT.
Robert Strandh [Tue, 31 May 2011 23:44:36 +0000]
Supplied docstrings for DELETE, DELETE-IF, and DELETE-IF-NOT.
Robert Strandh [Tue, 31 May 2011 23:12:53 +0000]
Supplied docstrings for REMOVE, REMOVE-IF, and REMOVE-IF-NOT.
Robert Strandh [Tue, 31 May 2011 02:20:31 +0000]
Fixed the description of FIND, FIND-IF and FIND-IF-NOT so that
it applies to all three functions.
Added docstrings for POSITION, POSITION-IF, and POSITION-IF-NOT.
Robert Strandh [Tue, 31 May 2011 01:42:00 +0000]
Factored out description of FIND, FIND-IF, and FIND-IF-NOT.
Factored out description of COUNT, COUNT-IF, and COUNT-IF-NOT.
Added a description of the PREDICATE SEQUENCE pair of arguments.
Renamed the description of satisfying the test to reflect that
it is a two-argument test.
Added descriptions of satisfying one argument tests, a positive test
and a negative test.
Added docstrings for FIND-IF, FIND-IF-NOT.
Added docstrings for COUNT-IF, COUNT-IF-NOT.
Robert Strandh [Tue, 31 May 2011 00:07:34 +0000]
Factored out exceptional situation for bounding indexes.
Added docstring for COUNT.
Robert Strandh [Mon, 30 May 2011 23:51:36 +0000]
Fixed a conflict detected by GIT.
Robert Strandh [Mon, 30 May 2011 23:50:08 +0000]
I made an attempt to factor the information in the docstrings.
Hopefully, this will give more maintainable and more consistent
docstrings.
Robert Strandh [Mon, 23 May 2011 23:41:32 +0000]
Fixed a few tests that inadvertently assumed that small integers
are eq. Thanks to _3b on #lisp for spotting this.
Robert Strandh [Mon, 23 May 2011 23:30:54 +0000]
Merge branch 'master' of common-lisp.net:/project/sicl/public_html/git/SICL
Robert Strandh [Mon, 23 May 2011 23:30:15 +0000]
Fixed an incorrect test.
Robert Strandh [Wed, 30 Mar 2011 04:48:44 +0000]
near-final version
Robert Strandh [Tue, 29 Mar 2011 09:58:21 +0000]
Merge branch 'master' of common-lisp.net:/project/sicl/public_html/git/SICL
Conflicts:
Code/Sequences/sequences.lisp
Robert Strandh [Tue, 29 Mar 2011 09:55:03 +0000]
Minor modifications
Robert Strandh [Tue, 29 Mar 2011 09:52:32 +0000]
ELS 2011 slides
Robert Strandh [Sun, 13 Feb 2011 04:01:15 +0000]
More tests for the `and' and `or' macros.
Robert Strandh [Sun, 13 Feb 2011 03:26:23 +0000]
Changed the implementation of the `and' and `or' macros so
that it checks eagarly for an improper list of forms.
Robert Strandh [Sun, 13 Feb 2011 03:24:43 +0000]
More tests for the cond macro.
Tests for the or macro.
Tests for the and macro.
Robert Strandh [Sat, 12 Feb 2011 01:56:28 +0000]
Tests for the cond macro.
Robert Strandh [Wed, 9 Feb 2011 05:46:23 +0000]
Fixed the heading comment.
Added name-mixin to conditions.
Moved condition reporters to a separate file.
Moved package definition to a separate file.
Robert Strandh [Wed, 9 Feb 2011 05:45:19 +0000]
Added (empty for now) file for English language documentation strings.
Robert Strandh [Wed, 9 Feb 2011 05:44:18 +0000]
Broke out package definitions into a separate file.
Robert Strandh [Wed, 9 Feb 2011 05:43:53 +0000]
Added description for the module.
Robert Strandh [Wed, 9 Feb 2011 05:43:18 +0000]
Added ASDF system definition file.
Robert Strandh [Wed, 9 Feb 2011 05:42:41 +0000]
Broke out English-language condition reporters into a separate file.
Robert Strandh [Tue, 8 Feb 2011 03:32:33 +0000]
Introduced conditions for syntax and semantic analysis.
Implemented a function for checking the order of clauses.
Robert Strandh [Sat, 29 Jan 2011 01:50:40 +0000]
Replaced `named-clause' by `name-clause' to conform to the HyperSpec.
Modified the parsing code so that all clauses are parsed with no
concern about the order. Later, we need to check the order and
generate appropriate error messages if they are out of order.
Modified the definition of the class loop-body to contain this new
list of all the clauses. Introduced a function parse-any-clause that
parses any clause.
Modified the code generation to take the new list of all clauses into
account.
Removed the function parse-variable-clause, because it is no longer
needed with the new way of parsing clauses.
Removed the function parse-main-clause, because it is no longer needed
with the new way of parsing clauses.
Added a comment about the HyperSpec definition of the conditional
clause. Renamed existing function `parse-conditional' to
`parse-conditional-remaining' and introduced a "normal" parser called
`parse-conditional' that just does an alternative parse of if/when and
unless.
Added a comment about the HyperSpec definition of the termination-test
clause. Renamed existing function `parse-termination-test' to
`parse-termination-test-remaining' and introduced a "normal" parser
called `parse-termination-test' that just does an alternative parse of
if/when and unless.
All tests pass (there are not very many, but still).
Robert Strandh [Fri, 28 Jan 2011 23:46:17 +0000]
Fixed a problem where (form clause) was called on a do-clause, but
do-clause has multiple forms, so it should be `(progn ,(forms
clause)).
Another way of fixing this would have been to put the progn in the
clause instead. I don't know what is best.
Robert Strandh [Sun, 23 Jan 2011 07:45:48 +0000]
More comments relevant to clause syntax.
Robert Strandh [Sun, 23 Jan 2011 05:55:20 +0000]
More comments related to HyperSpec grammar definitions of clauses.
Removed an incorrect definition of do-clause. The correct one was
already in there.
Robert Strandh [Sun, 23 Jan 2011 00:32:07 +0000]
More comments related to syntax of clauses.
Robert Strandh [Sat, 22 Jan 2011 00:13:40 +0000]
Changed the file header comment to be more accurate.
Added comments to describe named-clause, d-var-spec type-spec,
simple-type-spec, destructured-type-spec, d-type-spec, and with-clause.
Robert Strandh [Sat, 22 Jan 2011 00:13:03 +0000]
Added description of the project.
Matthieu Villeneuve [Thu, 30 Dec 2010 09:49:05 +0000]
Merge branch 'master' of ssh://common-lisp.net//project/sicl/public_html/git/SICL
Matthieu Villeneuve [Thu, 30 Dec 2010 09:46:26 +0000]
Started implementing code generation for following clauses:
while, until, repeat, with, initially, finally, collect, sum, do.
Robert Strandh [Wed, 15 Dec 2010 07:33:59 +0000]
Removed comments that won't be valid after reorganization.
Robert Strandh [Wed, 15 Dec 2010 07:14:42 +0000]
Reordered arguments and components of names of specialized versions of
remove and delete in order make argument order and naming more
uniform.
Robert Strandh [Tue, 14 Dec 2010 04:26:34 +0000]
Made sure the tests that compare a stupid version with the real one
do not attempt to run a test where end < start.
Robert Strandh [Tue, 14 Dec 2010 04:25:35 +0000]
English language condition reporter for condition to use when
end < start.
Robert Strandh [Tue, 14 Dec 2010 04:24:24 +0000]
New condition to be used when end < start.
Modified more functions to use test-p and test-not-p.
Robert Strandh [Tue, 14 Dec 2010 02:48:25 +0000]
Fixed a few problems reported by the compiler.
Robert Strandh [Tue, 14 Dec 2010 01:38:55 +0000]
Put back code that was accidentally removed.
Robert Strandh [Mon, 13 Dec 2010 03:15:03 +0000]
Merge branch 'master' of rstrandh@common-lisp.net:/project/sicl/public_html/git/SICL
Conflicts:
Code/Sequences/sequences.lisp
Robert Strandh [Mon, 13 Dec 2010 03:01:02 +0000]
Started work on the nsubstitute function to get special versions
that specialize on everything except the sequence type.
Robert Strandh [Sun, 12 Dec 2010 17:04:16 +0000]
Changed from-end=t to from-end=true everywhere so as to reflect the
fact that from-end can be any generalized boolean.
For count, count-if, and count-if-not: introduced special versions
that are specialized on all the keyword parameters, but not on the
sequence type, and changed the main functions to use those new
versions. The reason for this is that the corresponding compiler
macros (that have not been written yet) will not be able to determine
the sequence type, but can determine they keyword parameters, so the
compiler macros will use these new specialized functions. The result
is that only the sequence type will have to be determined at execution
time, or perhaps not even then if the compiler can determine the type
by using type inference.
Robert Strandh [Tue, 7 Dec 2010 06:19:25 +0000]
Fixed a problem in tail-must-be-proper-list-with-end revealed
by latest tests.
Robert Strandh [Tue, 7 Dec 2010 05:51:11 +0000]
Fixed a problem in copy-prefix revealed by latest tests.
Robert Strandh [Tue, 7 Dec 2010 05:35:59 +0000]
Fixed some of the problems in remove, remove-if, and remove-if-not
revealed by the latest tests.
Robert Strandh [Tue, 7 Dec 2010 04:45:30 +0000]
Fixed some of the problems revealed by the latest test of the
remove function.
Robert Strandh [Tue, 7 Dec 2010 04:22:40 +0000]
Fixed some of the defects revealed by the latest test of the
remove function. Many still remain.
Robert Strandh [Tue, 7 Dec 2010 04:21:10 +0000]
Added tests for the remove function. These tests compare the stupid
implementation of remove to the real one. Several defects are
revealed.
Robert Strandh [Mon, 6 Dec 2010 05:20:39 +0000]
Wrote a stupid version of remove to use for testing purposes.
Robert Strandh [Sun, 5 Dec 2010 11:00:06 +0000]
Modified remove-if-not in the same spirit as remove-if.
Robert Strandh [Sun, 5 Dec 2010 10:45:10 +0000]
Modified remove-if in the same spirit as remove.
Renamed parameters to remove-if from test/test-not to predicate.
Robert Strandh [Sun, 5 Dec 2010 10:05:37 +0000]
Modified specialized versions of the remove function when count=other
and from-end=t to use the new method of scanning a list from the end.
Robert Strandh [Sun, 5 Dec 2010 09:20:42 +0000]
Introduced a utility function named copy-prefix to use with the
remove-family functions when seq-type=list. Also applied some code
factoring to use other utility functions.
Currently, the find-family functions are all wrong for from-end=true
and count=other, because they destructively reverse the interval to be
checked. It does put it back later, but in the presence of threads,
the current behavior is probably not wanted. The plan, instead, is to
use the new method for scanning lists from end without consuming too
much stack.
Robert Strandh [Sun, 5 Dec 2010 06:32:56 +0000]
Did some significant code factoring in count, count-if, and
count-if-not. Also applied new method for scanning list from the end
when this is called for in count-if and count-if-not. There are no
cases where we can cheat in those functions because the predicate may
be any function. We *could* guess some common predicates that have no
side effects, but it probably is not worth it.
Robert Strandh [Sun, 5 Dec 2010 06:30:46 +0000]
Made the presentation less verbose when tests pass.
Fixed a problem in stupid-count-if and stupid-count-if-not that
made most of the tests fail, even though they should have passed.
Robert Strandh [Sat, 4 Dec 2010 16:06:53 +0000]
New method for traversing lists from the end, which is required by
some sequence functions, in particular count when from-end is true.
This method uses recursion, and traverses during backtrack, but it
limits the stack depth to some fixed amount that can be set for
each implementation.
Modified existing specialized versions of count to take advantage of
the new method. Some of them were correct in that they traversed from
end, using an auxiliary vector. Some of them were wrong, because they
would scan from start to end even though key=other, so the key
function could have side effects, and so scanning from start to end
would have been a violation of the standard.
This new method gives us a very fast version of count when from-end is
true and either key is not identity or either test or test-not is
neither eql nor eq, i.e., when the test and/or the key might have side
effects. We have observed execution times of only 1/3 of those of
SBCL on long lists.
Even though there is no requirement that the list be scanned from the
end when from-end is true in functions such as find, scanning from the
beginning can be penalizing when the test and/or the key functions are
costly to execute. We might use our new method for those cases as
well, thus potentially saving a lot when the item looked for is close
to the end of the list.
More utility functions to use at the end of lists.
More renamings in order that the code conform to recent naming
conventions.
The entire code is in a limbo now. Many tests fail. This is work in
progress to get it back into a reasonable state.
Robert Strandh [Thu, 2 Dec 2010 16:50:20 +0000]
Wrote tests for count, count-if, and count-if-not. These tests
reveal several failures.
Robert Strandh [Thu, 2 Dec 2010 16:48:37 +0000]
Introduced test-p and test-not-p into the count function,
so as to distinguish between the case where one of those
keyword argument is not given, or when an explicit nil is given.
Fixed a problem where the wrong specialized function was called when
neither test nor test-not were given.
Robert Strandh [Thu, 2 Dec 2010 16:09:09 +0000]
Massive modifications due to several failures revealed by
improved tests. Now all tests pass, but the coverage is still
low (around 15%). But with the new testing strategy, this number
will now improve fairly rapidly.
Robert Strandh [Thu, 2 Dec 2010 16:08:39 +0000]
Make it easier to identify the failed function.
Robert Strandh [Thu, 2 Dec 2010 13:52:58 +0000]
Total change of strategy with respect to testing the sequence
functions. It is just too time consuming and error prone to attempt
to list all relevant combinations of parameter values. Instead, I now
automate the process by comparing values to a "stupid" version.
This strategy allows us to automatically generate many possible
combinations of arguments.
Unfortunately, this strategy makes lisp-unit less useful than it could
be. I haven't made any decision as to whether to continue using it.
Robert Strandh [Thu, 2 Dec 2010 09:47:13 +0000]
Many more tests for the position function. Some fail.
Robert Strandh [Thu, 2 Dec 2010 07:39:54 +0000]
Many more tests for the position function.