Как предоставить содержимое файла в качестве расширения схемы? - PullRequest
1 голос
/ 29 декабря 2011

У меня есть

(define (compiler exp)
  (define (printer line) (display line) (newline))
  (init-generators)
  (let ((res (compile (append bootstrap (list exp)) function-res '())))
    (map printer c-string-list)
    (display bootstrap-c-code)
    (add-c-function 'startup '(env) res)
    (map (lambda (function) (map printer function) (newline)) c-function-list)
    'ok))

, и мне нужно

(define (compile file-name) 
    (compiler (load file-name)))

Но это не сработает.Это выполняется напрямую.Как я могу загрузить это как выражение?(Ехр)

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Вы ищете функцию read, а не load? Не зная больше о используемой вами реализации, я могу лишь указать на документацию read от r5rs. Используйте open-input-file, чтобы получить порт из имени файла, а затем прочитать с этого порта.

1 голос
/ 29 декабря 2011

Каково содержимое файла file-name? Если это выражение, load выполнит его, например, если file-name содержит (+ 1 1), (load filename) вернет 2.

С другой стороны, если file-name содержит список символов, они будут прочитаны как есть, например, если file-name содержит '(+ 1 1) (обратите внимание на кавычку в начале), тогда (load filename) будет return (+ 1 1), что, как я предполагаю, вы имеете в виду, говоря, что вам нужно загрузить его как выражение.

Если вам нужно загрузить несколько выражений внутри файла, заключите их в кавычки и начинайте в файле:

'(begin
  <your code here>
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...