\documentclass{article} \usepackage{axiom} \begin{document} \title{\$SPAD/src/algebra coerce.spad} \author{Richard Jenks, Manuel Bronstein} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{category TYPE Type} <>= )abbrev category TYPE Type ++ The new fundamental Type (keeping Object for 1.5 as well) ++ Author: Richard Jenks ++ Date Created: 14 May 1992 ++ Date Last Updated: 14 May 1992 ++ Description: The fundamental Type; Type(): Category == with nil @ \section{category KOERCE CoercibleTo} <>= )abbrev category KOERCE CoercibleTo ++ Category for coerce ++ Author: Manuel Bronstein ++ Date Created: ??? ++ Date Last Updated: 14 May 1991 ++ Description: ++ A is coercible to B means any element of A can automatically be ++ converted into an element of B by the interpreter. CoercibleTo(S:Type): Category == with coerce: % -> S ++ coerce(a) transforms a into an element of S. @ \section{category KONVERT ConvertibleTo} <>= )abbrev category KONVERT ConvertibleTo ++ Category for convert ++ Author: Manuel Bronstein ++ Date Created: ??? ++ Date Last Updated: 14 May 1991 ++ Description: ++ A is convertible to B means any element of A ++ can be converted into an element of B, ++ but not automatically by the interpreter. ConvertibleTo(S:Type): Category == with convert: % -> S ++ convert(a) transforms a into an element of S. @ \section{category RETRACT RetractableTo} <>= )abbrev category RETRACT RetractableTo ++ Category for retract ++ Author: ??? ++ Date Created: ??? ++ Date Last Updated: 14 May 1991 ++ Description: ++ A is retractable to B means that some elementsif A can be converted ++ into elements of B and any element of B can be converted into an ++ element of A. RetractableTo(S: Type): Category == with coerce: S -> % ++ coerce(a) transforms a into an element of %. retractIfCan: % -> Union(S,"failed") ++ retractIfCan(a) transforms a into an element of S if possible. ++ Returns "failed" if a cannot be made into an element of S. retract: % -> S ++ retract(a) transforms a into an element of S if possible. ++ Error: if a cannot be made into an element of S. add retract(s) == (u:=retractIfCan s) case "failed" => error "not retractable" u @ \section{License} <>= --Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --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. @ <<*>>= <> <> <> <> <> @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}