1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
This is an autogenerated patch header for a single-debian-patch file. The
delta against upstream is either kept as a single patch, or maintained
in some VCS, and exported as a single patch instead of more manageable
atomic patches.
--- oaklisp-1.3.7.orig/README.md
+++ oaklisp-1.3.7/README.md
@@ -12,9 +12,8 @@ the Oaklisp dialect of lisp.
Project homepage(s)
-* https://alioth.debian.org/projects/oaklisp/ (main homepage)
-* https://github.com/barak/oaklisp (collaborative development)
-* http://www.bcl.hamilton.ie/~barak/oaklisp/ (ancient history)
+* https://github.com/barak/oaklisp (homepage, development)
+* http://barak.pearlmutter.net/oaklisp/ (ancient history)
The compiler compiles Oaklisp source code into byte-code for the
included Oaklisp emulator / virtual machine. The implementation
@@ -38,5 +37,7 @@ is described in the included documentati
* Barak A. Pearlmutter and Kevin J. Lang. The implementation of
Oaklisp. In Peter Lee, editor, Topics in Advanced Language
Implementation, pages 189–215. MIT Press, 1991.
+ URL http://barak.pearlmutter.net/papers/Oaklisp-TALI-Chapter-1991.djvu
+ http://barak.pearlmutter.net/papers/Oaklisp-TALI-Chapter-1991.pdf
See BUILD.md for instructions on how to build the system.
--- oaklisp-1.3.7.orig/doc/Makefile.am
+++ oaklisp-1.3.7/doc/Makefile.am
@@ -22,7 +22,7 @@ pdf_DATA = $(LATEX_PDFS)
EXTRA_DIST = $(LATEX_SRCS)
.tex.pdf:
- cd $(dir $<) && $(LATEXMK) -pdf $(notdir $<) \
+ (cd $(dir $<) && $(LATEXMK) -pdf $(notdir $<)) \
|| cp ../prebuilt/doc/$@ $@
EXTRA_DIST += examples/bank-example.oak examples/change.oak \
--- oaklisp-1.3.7.orig/doc/lang/io.tex
+++ oaklisp-1.3.7/doc/lang/io.tex
@@ -187,7 +187,8 @@ There are many hash reader macro charact
decimal, binary and complex numbers, respectively. The syntax
\texttt{\#\emph{n}r\emph{xxx}} is used to read \emph{xxx} in base \emph{n}.
\texttt{\#(\ldots)} is used for reading vectors. The \texttt{\#|} macro
-comments out text until a matching \texttt{|\#}, with proper nesting. As
+comments out text until a matching \texttt{|\#}, with proper nesting.
+\texttt{\#;\emph{e}} comments out the s-expression \emph{e}. As
described in Section~\ref{sec:truths}, \df{\#t} and \df{\#f} are read
as the canonical true and false values, respectively.
--- oaklisp-1.3.7.orig/doc/lim/admin.tex
+++ oaklisp-1.3.7/doc/lim/admin.tex
@@ -19,10 +19,7 @@
\section{Getting a Copy}
-The most recent released version of Oaklisp, along with the manuals,
-are available at \url{http://www.bcl.hamilton.ie/~barak/oaklisp/}, but
-this is to be superseded by a new site:
-\url{http://oaklisp.alioth.debian.org/}.
+See \url{https://github.com/barak/oaklisp/}.
\section{Bugs}
@@ -50,7 +47,7 @@ C routines from a running Oaklisp.
\end{itemize}
Bug reports, enhancements, and the like should be posted using the
-facilities on \url{http://oaklisp.alioth.debian.org/}; queries can
+facilities on \url{https://github.com/barak/oaklisp/}; queries can
also be sent to \texttt{barak+oaklisp@pearlmutter.net}.
We appreciate enhancements (especially in the form of patch files),
--- oaklisp-1.3.7.orig/man/man1/oaklisp.1.in
+++ oaklisp-1.3.7/man/man1/oaklisp.1.in
@@ -192,11 +192,9 @@ implementation manuals lang.pdf and lim.
OaklispSummary.pdf, whose source is included with the distribution,
and installed in @pdfdir@/.
-The Oaklisp home page is transitioning from
-.URL http://www.bcl.hamilton.ie/~barak/oaklisp/ "its old location"
+The Oaklisp home page is
+.URL http://barak.pearlmutter.net/oaklisp/ "old location"
to
-.URL https://oaklisp.alioth.debian.org/ alioth
-and
.URL https://github.com/barak/oaklisp github .
.I The Implementation of Oaklisp
--- oaklisp-1.3.7.orig/src/world/hash-reader.oak
+++ oaklisp-1.3.7/src/world/hash-reader.oak
@@ -131,7 +131,11 @@
(lambda (stream char arg)
(when arg
(signal cant-have-#-arg char arg))
- (eval (read stream) #*current-locale)))
+ (let ((s (read stream)))
+ (if #*read-suppress
+ ;; quote here is a hint that s was not evaluated
+ `,s
+ (eval s #*current-locale)))))
(define-hash-macro-char #\b
(lambda (stream char arg)
@@ -294,4 +298,17 @@
"Inexact numbers are not supported.")
x)))
+;;; This implements the comment notation #;sexpr , i.e., #; and the
+;;; sexpr following it are a comment and ignored. Since comments
+;;; shouldn't be evaluating stuff, a switch is added to disable
+;;; #.sexpr evaluation while reading the ignored sexpr.
+
+(define-hash-macro-char #\;
+ (lambda (stream char arg)
+ (when arg
+ (signal cant-have-#-arg char arg))
+ (bind ((#*read-suppress #t))
+ (read stream))
+ the-unread-object))
+
;;; eof
--- oaklisp-1.3.7.orig/src/world/reader.oak
+++ oaklisp-1.3.7/src/world/reader.oak
@@ -237,7 +237,7 @@
(read-char stream)
((cdr c-syntax) stream c))))))))
-;;; In order to read dotted lists correctly, the right thing to do it
+;;; In order to read dotted lists correctly, the right thing to do is
;;; to return a magic thing, THE-DOT-TOKEN, when a '.' is read as a
;;; single, unescaped token. Like the unread object, this is never
;;; returned by READ.
--- oaklisp-1.3.7.orig/src/world/repl.oak
+++ oaklisp-1.3.7/src/world/repl.oak
@@ -21,10 +21,13 @@
(define (read-eval-print-loop)
(format #t "~&Oaklisp evaluation loop.~%")
- (bind ((#*print-length 7)
+ (bind (;; Exiting:
+ (#*eof-exit-limit 3)
+ ;; Print parameters:
+ (#*print-length 7)
(#*print-level 3)
(#*print-escape #t)
- ;; Current input
+ ;; Current input:
(#*- #f)
;; Previous inputs:
(#*+ #f)
@@ -46,7 +49,7 @@
(show-handlers)
(let ((out-of-here (and (not (zero? #*debug-level))
#*up-a-debug-level)))
- (iterate aux ()
+ (iterate aux ((eof-exit-i 1))
(native-catch uptag
(bind ((#*up-a-debug-level uptag))
(dotimes (i (+ #*debug-level 1))
@@ -71,8 +74,14 @@
(flush standard-output)
(exit))
((zero? #*debug-level)
- (format #t "~&Type (exit) to leave Oaklisp.~%")
- (aux))
+ (cond ((= eof-exit-i #*eof-exit-limit)
+ (exit))
+ (else
+ (let ((die (- #*eof-exit-limit eof-exit-i)))
+ (format #t "~&To leave Oaklisp, enter (exit), or hit ^D ")
+ (if (= die 1) (format #t "one last time.~%")
+ (format #t "~a more times.~%" die)))
+ (aux (+ eof-exit-i 1)))))
(else
(write-char standard-output #\newline)
(throw out-of-here #f))))
@@ -106,4 +115,4 @@
(invoke-debugger x)))
(print v standard-output))
(write-char standard-output #\newline))))))))
- (aux)))))))
+ (aux 1)))))))
|