rpm -qi guile16-1.6.8-alt1.1 Name : guile16 Relocations: (not relocateable) Version : 1.6.8 Vendor: ALT Linux Team Release : alt1.1 Build Date: Птн 17 Лис 2006 21:38:39 Install date: Чтв 10 Кві 2008 14:07:50 Build Host: bee5.hasher.altlinux.org Group : Development/Other Source RPM: guile16-1.6.8-alt1.1.src.rpm Size : 2118916 License: GPL Packager : Alexey Voinov <voins@altlinux.ru> URL : http://www.gnu.org/software/guile/ Summary : A GNU implementation of Scheme for application extensibility. Description : GUILE (GNU's Ubiquitous Intelligent Language for Extension) is a library implementation of the Scheme programming language, written in C. GUILE provides a machine-independent execution platform that can be linked in as a library during the building of extensible programs. Install the guile package if you'd like to add extensibility to programs that you are developing. You'll also need to install the guile-devel package.
Исходные данные: (define rows '( #(("default" . "") (#t . "theme:ltsconf/check.png") (#t . "theme:ltsconf/check.png") ("default" . "")) #(("192.168.1.238" . "") (#f . "theme:ltsconf/cross.png") ("default" . "") ("1024x768" . "")) #(("192.168.1.252" . "") ("default" . "") (#f . "theme:ltsconf/cross.png") ("default" . "")) ) )
Рабочая функция: (define (rows->buff rows) (map (lambda (old-row) (define new-row (make-array #f (vector-length old-row))) (array-map! new-row (lambda (old-cell) (car old-cell) ) old-row ) new-row ) rows ) )
Правильный результат: guile> (rows->buff rows) (#("default" #t #t "default") #("192.168.1.238" #f "default" "1024x768") #("192.168.1.252" "default" #f "default"))
Нерабочая функция: (map (lambda (old-row) (let ( (new-row (make-array #f (vector-length old-row))) ) ( (array-map! new-row (lambda (old-cell) (car old-cell) ) old-row ) new-row ) ) ) rows ) )
Странный результат: guile> (rows->buff rows) Backtrace: In standard input: 209: 0* [rows->buff (#(# # # #) #(# # # #) #(# # # #))] 187: 1 [map #<procedure #f (old-row)> (#(# # # #) #(# # # #) #(# # # #))] In unknown file: ?: 2* [#<procedure #f (old-row)> #(# # # #)] In standard input: 189: 3* (let ((new-row #)) ((array-map! new-row # old-row) new-row)) 194: 4 ((array-map! new-row (lambda (old-cell) (car old-cell)) old-row) new-row) standard input:194:33: In expression ((array-map! new-row # ...) new-row): standard input:194:33: Wrong type to apply: #<unspecified> ABORT: (misc-error)
guile16: guile> (eqv? "on" "on") #f guile> (eqv? '("a" . "b") '("a" . "b")) #f guile> (equal? '("a" . "b") '("a" . "b")) #t guile> (eqv? 42 42) #t guile> (eqv? -0.0 0.0) #t guile> (equal? -0.0 0.0) #t guile> (eqv? -0 0) #t guile> (eqv? -0/1 0/1) #t
mzscheme-2: > (eqv? "on" "on") #f > (eqv? '("a" . "b") '("a" . "b")) #f > (equal? '("a" . "b") '("a" . "b")) #t > (eqv? 42 42) #t > (eqv? -0.0 0.0) #f > (equal? -0.0 0.0) #f > (eqv? -0 0) #t > (eqv? -0/1 0/1) #t