Как использовать модуль io с Chicken Scheme?

С Chicken Scheme я хочу использовать процедуру чтения строк. С переводчиком (csi) проблем нет:

(define (lire-vecteur)
   (let* ((fichier (car (command-line-arguments)))
      (flux (open-input-file fichier)))
     (let ((V (list->vector (map string->number (read-lines flux)))))
       (close-input-port flux)
       (display (tri-rapide V)))))

Но при попытке скомпилировать (csc) я получаю:

$ time ./tri-rapide-vecteur-lst ../mega-vecteur.txt 

Error: unbound variable: read-lines

    Call history:

    library.scm:3448: print-exit54375438      
    library.scm:2290: body3981    
    library.scm:2292: assign      
    library.scm:3448: current-print-length54395440    
    library.scm:2290: body3981    
    library.scm:2292: assign      
    library.scm:3926: ##sys#print     
    library.scm:3188: case-sensitive      
    library.scm:3189: keyword-style   
    library.scm:3190: ##sys#print-length-limit    
    library.scm:3297: outchr      
    library.scm:3188: g5148   
    library.scm:3927: print-call-chain    
    library.scm:3882: ##sys#get-call-chain    
    library.scm:3834: ##sys#make-vector   
    library.scm:1371: ##sys#allocate-vector     <--

read-lines является частью модуля (chicken io). Как импортировать этот модуль в мою программу?

Спасибо за любую подсказку, и хорошего дня.

Всего 3 ответа


Вы уверены, что используете курицу 5? Похоже, вы используете CHICKEN 4. В CHICKEN 5 интерпретатор обычно должен иметь те же модули, что и компилятор, но это может немного зависеть от того, что вы делаете.

Правильное заклинание для импорта модуля (chicken io) просто: (import (chicken io)) .


Hum:

(import (chicken io))

(define (lire-vecteur)
   (let* ((fichier (car (command-line-arguments)))
      (flux (open-input-file fichier)))
     (let ((V (list->vector (map string->number (read-lines flux)))))
       (close-input-port flux)
       (display (tri-rapide V)))))


$ csc tri-rapide-vecteur-lst.scm 

Syntax error (import): cannot import from undefined module

Релиз Ubuntu, который я использую, поставляется с Chicken 4, поэтому я использую его. Тем не менее, я хотел бы понять синтаксис для импорта модуля, и вам было бы очень приятно (или другому поклоннику Chicken), если бы вы могли объяснить это мне, потому что моя попытка не удалась.


Есть идеи?

10000