Файловые операции ввода / вывода - схема - PullRequest
5 голосов
/ 15 ноября 2010

Может ли кто-нибудь указать мне на примеры базовых операций ввода-вывода в схеме?

Я просто хочу попробовать базовые операции чтения / записи / обновления файла.

Трудно найти нехватку соответствующих ресурсов для обучения.

Ответы [ 3 ]

15 голосов
/ 15 ноября 2010

Самый простой способ чтения / записи файлов в любой R5RS Схеме, соответствующей:

;; Read a text file
(call-with-input-file "a.txt"
  (lambda (input-port)
    (let loop ((x (read-char input-port)))
      (if (not (eof-object? x))
          (begin
            (display x)
            (loop (read-char input-port)))))))

;; Write to a text file
(call-with-output-file "b.txt"
  (lambda (output-port)
    (display "hello, world" output-port))) ;; or (write "hello, world" output-port)

Схема имеет такое понятие портов , которые представляют устройства, на которыхОперации ввода / вывода могут быть выполнены.Большинство реализаций Scheme ассоциируют call-with-input-file и call-with-output-file с буквальными дисковыми файлами, и вы можете безопасно их использовать.

2 голосов
/ 04 февраля 2016

Пожалуйста, смотрите следующий пост, если вы работаете с R5RS-совместимой схемой:

R5RS Схема ввода-вывода: как записать / добавить текст в файл вывода?

Представленное здесь решение выглядит следующим образом:

; This call opens a file in the append mode (it will create a file if it doesn't exist)
(define my-file (open-file "my-file-name.txt" "a"))

; You save text to a variable
(define my-text-var1 "This is some text I want in a file")
(define my-text-var2 "This is some more text I want in a file")

; You can output these variables or just text to the file above specified
; You use string-append to tie that text and a new line character together.
(display (string-append my-text-var1 "\r\n" my-file))
(display (string-append my-text-var2 "\r\n" my-file))
(display (string-append "This is some other text I want in the file" "\r\n" my-file))

; Be sure to close the file, or your file will not be updated.
(close-output-port my-file)
2 голосов
/ 15 ноября 2010

В основном это зависит от реализации.Учитывая, что вы используете ракетку, см. раздел руководства и справочное руководство .

...