⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arrays.scm

📁 MSYS在windows下模拟了一个类unix的终端
💻 SCM
字号:
;;; installed-scm-file;;;; Copyright (C) 1999, 2001 Free Software Foundation, Inc.;;;; ;;;; This program is free software; you can redistribute it and/or modify;;;; it under the terms of the GNU General Public License as published by;;;; the Free Software Foundation; either version 2, or (at your option);;;; any later version.;;;; ;;;; This program 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 General Public License for more details.;;;; ;;;; You should have received a copy of the GNU General Public License;;;; along with this software; see the file COPYING.  If not, write to;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,;;;; Boston, MA 02111-1307 USA;;;; (define uniform-vector? array?)(define make-uniform-vector dimensions->uniform-array);;  (define uniform-vector-ref array-ref)(define (uniform-vector-set! u i o)  (uniform-array-set1! u o i))(define uniform-vector-fill! array-fill!)(define uniform-vector-read! uniform-array-read!)(define uniform-vector-write uniform-array-write)(define (make-array fill . args)  (dimensions->uniform-array args '() fill))(define (make-uniform-array prot . args)  (dimensions->uniform-array args prot))(define (list->array ndim lst)  (list->uniform-array ndim '() lst))(define (list->uniform-vector prot lst)  (list->uniform-array 1 prot lst))(define (array-shape a)  (map (lambda (ind) (if (number? ind) (list 0 (+ -1 ind)) ind))       (array-dimensions a)))(let ((make-array-proc (lambda (template)			 (lambda (c port)			   (read:uniform-vector template port)))))  (for-each (lambda (char template)	      (read-hash-extend char				(make-array-proc template)))	    '(#\a #\u #\e #\s #\i #\c #\y   #\h #\l)	    '(#\a 1   -1  1.0 1/3 0+i #\nul s   l)))(let ((array-proc (lambda (c port)		    (read:array c port))))  (for-each (lambda (char) (read-hash-extend char array-proc))		  '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))(define (read:array digit port)  (define chr0 (char->integer #\0))  (let ((rank (let readnum ((val (- (char->integer digit) chr0)))		(if (char-numeric? (peek-char port))		    (readnum (+ (* 10 val)				(- (char->integer (read-char port)) chr0)))		    val)))	(prot (if (eq? #\( (peek-char port))		  '()		  (let ((c (read-char port)))		    (case c ((#\b) #t)			  ((#\a) #\a)			  ((#\u) 1)			  ((#\e) -1)			  ((#\s) 1.0)			  ((#\i) 1/3)			  ((#\c) 0+i)			  (else (error "read:array unknown option " c)))))))    (if (eq? (peek-char port) #\()	(list->uniform-array rank prot (read port))	(error "read:array list not found"))))(define (read:uniform-vector proto port)  (if (eq? #\( (peek-char port))      (list->uniform-array 1 proto (read port))))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -