diff options
author | dos-reis <gdr@axiomatics.org> | 2007-09-12 22:34:35 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-09-12 22:34:35 +0000 |
commit | 85b24b09dc2103e0d44b043c85f29bb26272a9ef (patch) | |
tree | 09d209066481cd0d8bf48e8eedf358946eb455b9 /src/interp/dq.boot | |
parent | edc726b51cc48c0a1f9241fa159f85d512e98968 (diff) | |
download | open-axiom-85b24b09dc2103e0d44b043c85f29bb26272a9ef.tar.gz |
* dq.boot: New.
* dq.boot.pamphlet: Move content to dq.boot.pamphlet. Remove.
* Makefile.pamphlet (dq.$(FASLEXT)): New rule.
Diffstat (limited to 'src/interp/dq.boot')
-rw-r--r-- | src/interp/dq.boot | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/interp/dq.boot b/src/interp/dq.boot new file mode 100644 index 00000000..894e21cd --- /dev/null +++ b/src/interp/dq.boot @@ -0,0 +1,82 @@ +-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +-- All rights reserved. +-- Copyright (C) 2007, Gabriel Dos Reis. +-- All rights reserved. +-- +-- Redistribution and use in source and binary forms, with or without +-- modification, are permitted provided that the following conditions are +-- met: +-- +-- - Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- +-- - Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in +-- the documentation and/or other materials provided with the +-- distribution. +-- +-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +-- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import '"boot-pkg" + +)package "BOOT" + +-- Dequeue functions + +-- dqUnit makes a unit dq i.e. a dq with one item, from the item + +-- dqUnitCopy copies a unit dq + +-- dqAppend appends 2 dq's, destroying the first + +-- dqConcat concatenates a list of dq's, destroying all but the last + +-- dqToList transforms a dq to a list + +dqUnit s==(a:=[s];CONS(a,a)) + +dqUnitCopy s== dqUnit(CAAR s) + +dqAppend(x,y)== + if null x + then y + else if null y + then x + else + RPLACD (CDR x,CAR y) + RPLACD (x, CDR y) + x + +dqConcat ld== + if null ld + then nil + else if null rest ld + then first ld + else dqAppend(first ld,dqConcat rest ld) + +dqToList s==if null s then nil else CAR s + +dqAddAppend(x,y)== + if null x + then nil + else if null y + then nil + else + RPLACD (CDR x,CAR y) + RPLACD (x, CDR y) + x |