[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/07: Remove (ice-9 channel)
From: |
Andy Wingo |
Subject: |
[Guile-commits] 02/07: Remove (ice-9 channel) |
Date: |
Tue, 22 Oct 2019 10:23:21 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guile.
commit 40395c0dff238b62ba312e623a70c7f4b015507d
Author: Andy Wingo <address@hidden>
Date: Mon Oct 21 17:23:45 2019 +0200
Remove (ice-9 channel)
* module/ice-9/channel.scm: Remove. This file has had a bug since
2.0 or so that prevented loading the module; I can only conclude that
it hasn't worked for years.
* module/Makefile.am (SOURCES): Remove ice-9/channel.scm.
---
module/Makefile.am | 1 -
module/ice-9/channel.scm | 170 -----------------------------------------------
2 files changed, 171 deletions(-)
diff --git a/module/Makefile.am b/module/Makefile.am
index fe31675..79f42d3 100644
--- a/module/Makefile.am
+++ b/module/Makefile.am
@@ -49,7 +49,6 @@ SOURCES = \
ice-9/boot-9.scm \
ice-9/buffered-input.scm \
ice-9/calling.scm \
- ice-9/channel.scm \
ice-9/command-line.scm \
ice-9/common-list.scm \
ice-9/control.scm \
diff --git a/module/ice-9/channel.scm b/module/ice-9/channel.scm
deleted file mode 100644
index 9c237f5..0000000
--- a/module/ice-9/channel.scm
+++ /dev/null
@@ -1,170 +0,0 @@
-;;; Guile object channel
-
-;; Copyright (C) 2001, 2006, 2009, 2010 Free Software Foundation, Inc.
-
-;;;; This library is free software; you can redistribute it and/or
-;;;; modify it under the terms of the GNU Lesser General Public
-;;;; License as published by the Free Software Foundation; either
-;;;; version 3 of the License, or (at your option) any later version.
-;;;;
-;;;; This library is distributed in the hope that it will be useful,
-;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;;;; Lesser General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU Lesser General Public
-;;;; License along with this library; if not, write to the Free Software
-;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
-
-;;; Commentary:
-
-;; Now you can use Guile's modules in Emacs Lisp like this:
-;;
-;; (guile-import current-module)
-;; (guile-import module-ref)
-;;
-;; (setq assq (module-ref (current-module) 'assq))
-;; => ("<guile>" %%1%% . "#<primitive-procedure assq>")
-;;
-;; (guile-use-modules (ice-9 documentation))
-;;
-;; (object-documentation assq)
-;; =>
-;; " - primitive: assq key alist
-;; - primitive: assv key alist
-;; - primitive: assoc key alist
-;; Fetches the entry in ALIST that is associated with KEY. To decide
-;; whether the argument KEY matches a particular entry in ALIST,
-;; `assq' compares keys with `eq?', `assv' uses `eqv?' and `assoc'
-;; uses `equal?'. If KEY cannot be found in ALIST (according to
-;; whichever equality predicate is in use), then `#f' is returned.
-;; These functions return the entire alist entry found (i.e. both the
-;; key and the value)."
-;;
-;; Probably we can use GTK in Emacs Lisp. Can anybody try it?
-;;
-;; I have also implemented Guile Scheme mode and Scheme Interaction mode.
-;; Just put the following lines in your ~/.emacs:
-;;
-;; (require 'guile-scheme)
-;; (setq initial-major-mode 'scheme-interaction-mode)
-;;
-;; Currently, the following commands are available:
-;;
-;; M-TAB guile-scheme-complete-symbol
-;; M-C-x guile-scheme-eval-define
-;; C-x C-e guile-scheme-eval-last-sexp
-;; C-c C-b guile-scheme-eval-buffer
-;; C-c C-r guile-scheme-eval-region
-;; C-c : guile-scheme-eval-expression
-;;
-;; I'll write more commands soon, or if you want to hack, please take
-;; a look at the following files:
-;;
-;; guile-core/ice-9/channel.scm ;; object channel
-;; guile-core/emacs/guile.el ;; object adapter
-;; guile-core/emacs/guile-emacs.scm ;; Guile <-> Emacs channels
-;; guile-core/emacs/guile-scheme.el ;; Guile Scheme mode
-;;
-;; As always, there are more than one bugs ;)
-
-;;; Code:
-
-(define-module (ice-9 channel)
- :export (make-object-channel
- channel-open
- channel-print-value
- channel-print-token))
-
-;;;
-;;; Channel type
-;;;
-
-(define channel-type
- (make-record-type 'channel '(stdin stdout printer token-module)))
-
-(define make-channel (record-constructor channel-type))
-
-(define (make-object-channel printer)
- (make-channel (current-input-port)
- (current-output-port)
- printer
- (make-module)))
-
-(define channel-stdin (record-accessor channel-type 'stdin))
-(define channel-stdout (record-accessor channel-type 'stdout))
-(define channel-printer (record-accessor channel-type 'printer))
-(define channel-token-module (record-accessor channel-type 'token-module))
-
-;;;
-;;; Channel
-;;;
-
-(define (channel-open ch)
- (let ((stdin (channel-stdin ch))
- (stdout (channel-stdout ch))
- (printer (channel-printer ch))
- (token-module (channel-token-module ch)))
- (let loop ()
- (catch #t
- (lambda ()
- (channel:prompt stdout)
- (let ((cmd (read stdin)))
- (if (eof-object? cmd)
- (throw 'quit)
- (case cmd
- ((eval)
- (module-use! (current-module) token-module)
- (printer ch (eval (read stdin) (current-module))))
- ((destroy)
- (let ((token (read stdin)))
- (if (module-defined? token-module token)
- (module-remove! token-module token)
- (channel:error stdout "Invalid token: ~S" token))))
- ((quit)
- (throw 'quit))
- (else
- (channel:error stdout "Unknown command: ~S" cmd)))))
- (loop))
- (lambda (key . args)
- (case key
- ((quit) (throw 'quit))
- (else
- (format stdout "exception = ~S\n"
- (list key (apply format #f (cadr args) (caddr args))))
- (loop))))))))
-
-(define (channel-print-value ch val)
- (format (channel-stdout ch) "value = ~S\n" val))
-
-(define (channel-print-token ch val)
- (let* ((token (symbol-append (gensym "%%") '%%))
- (pair (cons token (object->string val))))
- (format (channel-stdout ch) "token = ~S\n" pair)
- (module-define! (channel-token-module ch) token val)))
-
-(define (channel:prompt port)
- (display "channel> " port)
- (force-output port))
-
-(define (channel:error port msg . args)
- (display "ERROR: " port)
- (apply format port msg args)
- (newline port))
-
-;;;
-;;; Guile 1.4 compatibility
-;;;
-
-(define guile:eval eval)
-(define eval
- (if (= (car (procedure-minimum-arity guile:eval)) 1)
- (lambda (x e) (guile:eval x e))
- guile:eval))
-
-(define object->string
- (if (defined? 'object->string)
- object->string
- (lambda (x) (format #f "~S" x))))
-
-;;; channel.scm ends here
- [Guile-commits] branch master updated (2cca091 -> f060f1a), Andy Wingo, 2019/10/22
- [Guile-commits] 01/07: Refactor PEG records, Andy Wingo, 2019/10/22
- [Guile-commits] 02/07: Remove (ice-9 channel),
Andy Wingo <=
- [Guile-commits] 06/07: Allow records to be subtyped, Andy Wingo, 2019/10/22
- [Guile-commits] 04/07: Deprecate two-arg `record-constructor', Andy Wingo, 2019/10/22
- [Guile-commits] 03/07: Re-implement (ice-9 gap-buffer) records in terms of srfi-9, Andy Wingo, 2019/10/22
- [Guile-commits] 05/07: Fix deprecated 1-arg `make-module' in tests, Andy Wingo, 2019/10/22
- [Guile-commits] 07/07: Record accessors respect subtyping, Andy Wingo, 2019/10/22