1 |
;;;; srfi-10.scm --- SRFI-10 read hash extension for Guile |
;;; srfi-10.scm --- Hash-Comma Reader Extension |
2 |
;;;; |
|
3 |
;;;; Copyright (C) 2001 Free Software Foundation, Inc. |
;; Copyright (C) 2001, 2002 Free Software Foundation, Inc. |
4 |
;;;; |
;; |
5 |
;;;; This program is free software; you can redistribute it and/or |
;; This program is free software; you can redistribute it and/or |
6 |
;;;; modify it under the terms of the GNU General Public License as |
;; modify it under the terms of the GNU General Public License as |
7 |
;;;; published by the Free Software Foundation; either version 2, or |
;; published by the Free Software Foundation; either version 2, or |
8 |
;;;; (at your option) any later version. |
;; (at your option) any later version. |
9 |
;;;; |
;; |
10 |
;;;; This program is distributed in the hope that it will be useful, |
;; This program is distributed in the hope that it will be useful, |
11 |
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 |
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 |
;;;; General Public License for more details. |
;; General Public License for more details. |
14 |
;;;; |
;; |
15 |
;;;; You should have received a copy of the GNU General Public License |
;; You should have received a copy of the GNU General Public License |
16 |
;;;; along with this software; see the file COPYING. If not, write to |
;; along with this software; see the file COPYING. If not, write to |
17 |
;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
18 |
;;;; Boston, MA 02111-1307 USA |
;; Boston, MA 02111-1307 USA |
19 |
;;;; |
;; |
20 |
;;;; As a special exception, the Free Software Foundation gives permission |
;; As a special exception, the Free Software Foundation gives permission |
21 |
;;;; for additional uses of the text contained in its release of GUILE. |
;; for additional uses of the text contained in its release of GUILE. |
22 |
;;;; |
;; |
23 |
;;;; The exception is that, if you link the GUILE library with other files |
;; The exception is that, if you link the GUILE library with other files |
24 |
;;;; to produce an executable, this does not by itself cause the |
;; to produce an executable, this does not by itself cause the |
25 |
;;;; resulting executable to be covered by the GNU General Public License. |
;; resulting executable to be covered by the GNU General Public License. |
26 |
;;;; Your use of that executable is in no way restricted on account of |
;; Your use of that executable is in no way restricted on account of |
27 |
;;;; linking the GUILE library code into it. |
;; linking the GUILE library code into it. |
28 |
;;;; |
;; |
29 |
;;;; This exception does not however invalidate any other reasons why |
;; This exception does not however invalidate any other reasons why |
30 |
;;;; the executable file might be covered by the GNU General Public License. |
;; the executable file might be covered by the GNU General Public License. |
31 |
;;;; |
;; |
32 |
;;;; This exception applies only to the code released by the |
;; This exception applies only to the code released by the |
33 |
;;;; Free Software Foundation under the name GUILE. If you copy |
;; Free Software Foundation under the name GUILE. If you copy |
34 |
;;;; code from other Free Software Foundation releases into a copy of |
;; code from other Free Software Foundation releases into a copy of |
35 |
;;;; GUILE, as the General Public License permits, the exception does |
;; GUILE, as the General Public License permits, the exception does |
36 |
;;;; not apply to the code that you add in this way. To avoid misleading |
;; not apply to the code that you add in this way. To avoid misleading |
37 |
;;;; anyone as to the status of such modified files, you must delete |
;; anyone as to the status of such modified files, you must delete |
38 |
;;;; this exception notice from them. |
;; this exception notice from them. |
39 |
;;;; |
;; |
40 |
;;;; If you write modifications of your own for GUILE, it is your choice |
;; If you write modifications of your own for GUILE, it is your choice |
41 |
;;;; whether to permit this exception to apply to your modifications. |
;; whether to permit this exception to apply to your modifications. |
42 |
;;;; If you do not wish that, delete this exception notice. |
;; If you do not wish that, delete this exception notice. |
43 |
|
|
44 |
;;; Commentary: |
;;; Commentary: |
45 |
|
|
46 |
;;; This module implements the syntax extension #,(), also called |
;; This module implements the syntax extension #,(), also called |
47 |
;;; hash-comma, which is defined in SRFI-10. |
;; hash-comma, which is defined in SRFI-10. |
48 |
;;; |
;; |
49 |
;;; The support for SRFI-10 consists of the procedure |
;; The support for SRFI-10 consists of the procedure |
50 |
;;; `define-reader-ctor' for defining new reader constructors and the |
;; `define-reader-ctor' for defining new reader constructors and the |
51 |
;;; read syntax form |
;; read syntax form |
52 |
;;; |
;; |
53 |
;;; #,(<ctor> <datum> ...) |
;; #,(<ctor> <datum> ...) |
54 |
;;; |
;; |
55 |
;;; where <ctor> must be a symbol for which a read constructor was |
;; where <ctor> must be a symbol for which a read constructor was |
56 |
;;; defined previously. |
;; defined previously. |
57 |
;;; |
;; |
58 |
;;; Example: |
;; Example: |
59 |
;;; |
;; |
60 |
;;; (define-reader-ctor 'file open-input-file) |
;; (define-reader-ctor 'file open-input-file) |
61 |
;;; (define f '#,(file "/etc/passwd")) |
;; (define f '#,(file "/etc/passwd")) |
62 |
;;; (read-line f) |
;; (read-line f) |
63 |
;;; => |
;; => |
64 |
;;; "root:x:0:0:root:/root:/bin/bash" |
;; "root:x:0:0:root:/root:/bin/bash" |
65 |
;;; |
;; |
66 |
;;; Please note the quote before the #,(file ...) expression. This is |
;; Please note the quote before the #,(file ...) expression. This is |
67 |
;;; necessary because ports are not self-evaluating in Guile. |
;; necessary because ports are not self-evaluating in Guile. |
68 |
|
;; |
69 |
|
;; This module is fully documented in the Guile Reference Manual. |
70 |
|
|
71 |
;;; Code: |
;;; Code: |
72 |
|
|
110 |
;; Install the hash extension. |
;; Install the hash extension. |
111 |
;; |
;; |
112 |
(read-hash-extend #\, hash-comma) |
(read-hash-extend #\, hash-comma) |
113 |
|
|
114 |
|
;;; srfi-10.scm ends here |