Hi all, I stumbled across this (http://www.codinghorror.com/blog/archives/001015.html) a little while ago and thought that alexandria's shuffle could do with an update.
Please find the attached patch which updates the shuffle function. Cheers, Sean.
New patches: [use Knush-Fisher-Yates shuffle algorithm [EMAIL PROTECTED] { hunk ./sequences.lisp 58 - (loop for i from start below end - do (rotatef (elt sequence i) (elt sequence (random end))))) + (loop for i from (1- end) downto start + do (rotatef (elt sequence i) (elt sequence (random (1+ i)))))) } Context: [Switch the argument order of STARTS/ENDS-WITH-SUBSEQ to that it matches STARTS/ENDS-WITH. [EMAIL PROTECTED] [Fix map-permutations typo. [EMAIL PROTECTED] [fix: darcs merge conflict was recorded into package.lisp [EMAIL PROTECTED] [Merge conflicts around the conditions [EMAIL PROTECTED] [Simplify IGNORE-SOME-CONDITIONS's docstring. Luis Oliveira <[EMAIL PROTECTED]>**20070823040556] [New macro: IGNORE-SOME-CONDITIONS Luis Oliveira <[EMAIL PROTECTED]>**20070726171110] [New macro: NCONCF Luis Oliveira <[EMAIL PROTECTED]>**20070720003523 - Added respective documentation to the manual. - New test: NCONCF.1 ] [New function: FEATUREP Luis Oliveira <[EMAIL PROTECTED]>**20070720003420 Added respective documentation in manual as well. ] [New macro: COERCEF Luis Oliveira <[EMAIL PROTECTED]>**20070720003607 Added respective documentation to the manual. ] [Small fix to REQUIRED-ARGUMENT's control string. Luis Oliveira <[EMAIL PROTECTED]>**20070823040500] [Fix some type declarations for CLISP-compatibility. Stelian Ionescu <[EMAIL PROTECTED]>**20070806160206 Type declareations like ((or fixnum null) bar) or (unsigned-byte foo) don't work on CLISP. Must use (type unsigned-byte foo) instead. ] [Remove trailing whitespace in source code Luis Oliveira <[EMAIL PROTECTED]>**20070711140350] [Renamed errors.lisp to conditions.lisp [EMAIL PROTECTED] [Added simple-style-warning function and condition. [EMAIL PROTECTED] [sane named-lambda Nikodemus Siivola <[EMAIL PROTECTED]>**20070809171107] [Use a shared expander for the SWITCH macros [EMAIL PROTECTED] - support #'eq and 'eq style :test arg - support T and OTHERWISE clause instead of the :default keyword arg ] [Make define-constant understand :test 'string= and #'string=. Feel free to 'darcs undo' it if it's considered too dwim'y. [EMAIL PROTECTED] [DECLAIM, not DECLARE. Nikodemus Siivola <[EMAIL PROTECTED]>**20070703103139] [Combinations, permutations, and derangements Nikodemus Siivola <[EMAIL PROTECTED]>**20070701122604] [Factorial, binomial-coefficient, subfactorial, and count-permutations. Nikodemus Siivola <[EMAIL PROTECTED]>**20070701122419] [Compiler-macro for OF-TYPE Nikodemus Siivola <[EMAIL PROTECTED]>**20070701122227] [ENSURE-CAR Nikodemus Siivola <[EMAIL PROTECTED]>**20070701122110] [ENSURE-FUNCTION Nikodemus Siivola <[EMAIL PROTECTED]>**20070701121903] [Documentation and comment tweaks Nikodemus Siivola <[EMAIL PROTECTED]>**20070701121316] [deftype for ARRAY-LENGTH Nikodemus Siivola <[EMAIL PROTECTED]>**20070701120827] [Added starts-with-subseq and ends-with-subseq [EMAIL PROTECTED] [Added delete-from-plist, delete-from-plistf, remove-from-plistf. [EMAIL PROTECTED] [MAP-IOTA, misc. fixes, and tests up to 100% coverage Nikodemus Siivola <[EMAIL PROTECTED]>**20070601143059] [Nothing Can Stop The Progressive Revolution Nikodemus Siivola <[EMAIL PROTECTED]>**20070601123336 Added: * XOR * WHICHEVER * SWITCH, ESWITCH, CSWItCH * UNIONF, NUNIONF * ALIST-PLIST, PLIST-ALIST * ENSURE-CONS * NAMED-LAMDBA * DEFINE-CONSTANT * STRING-DESIGNATOR Note: Documentation strings of many new operators are sorely lacking, particularly NAMED-LAMBDA and *SWITCH. ] [Added a faster loop based remove-from-plist [EMAIL PROTECTED] [Added a REMOVE-FROM-PLIST (same as SANS) [EMAIL PROTECTED] [Docstring typo [EMAIL PROTECTED] [Fix when-let documentation string. [EMAIL PROTECTED] [Patch by Tayssin John Gabbour, fixing two typos. Nikodemus Siivola <[EMAIL PROTECTED]>**20070318015005] [with-gensyms Nikodemus Siivola <[EMAIL PROTECTED]>**20070225160042] [required-argument Nikodemus Siivola <[EMAIL PROTECTED]>**20070225160010] [IF-LET, IF-LET*, WHEN-LET, and WHEN-LET* Nikodemus Siivola <[EMAIL PROTECTED]>**20061107104944] [Extended parse-body with a :whole arg, report multiple docstring error. [EMAIL PROTECTED] [Added (declare (ignore sub)) for type= [EMAIL PROTECTED] [SETF-functions for lastcar, first-elt, and last-elt. :KEY and :TEST for starts-with and ends-with Nikodemus Siivola <[EMAIL PROTECTED]>**20061017155126] [new: flatten, map-product, setp. fixed: set-equal Nikodemus Siivola <[EMAIL PROTECTED]>**20061016150600] [REMOVE-KEYS renamed to SANS, with new --arguably better-- argument order Nikodemus Siivola <[EMAIL PROTECTED]>**20061016125413] [ROTATE-RIGHT and ROTATE-LEFT replaced by a single function ROTATE Nikodemus Siivola <[EMAIL PROTECTED]>**20061016123238] [variance and standard-deviation biased by default, documentation fixes for both Nikodemus Siivola <[EMAIL PROTECTED]>**20061016114618] [documentation Nikodemus Siivola <[EMAIL PROTECTED]>**20061015215052] [Added .boring and added public_html to it, so you can darcs get it into your local alexandria repo [EMAIL PROTECTED] [tests passing Nikodemus Siivola <[EMAIL PROTECTED]>**20061015160607] [initial version Nikodemus Siivola <[EMAIL PROTECTED]>**20061015154202] Patch bundle hash: 8617de9eff47b6c2a0e021c08ca72b81d8b8566a
_______________________________________________ alexandria-devel mailing list alexandria-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/alexandria-devel