Как я могу различить диалекты схемы в блоках кода Org-Babel?

StackOverflow https://stackoverflow.com/questions/9338255

  •  27-10-2019
  •  | 
  •  

Вопрос

Оценка этого кода (CC CC):

#+begin_src scheme
(andmap + '(1 2 3) '(4 5 6))
#+end_src

приводит к следующей ошибке Babel:

ERROR: Unbound variable: andmap

Причина: Бабель оценил код с помощью кила, а не ракеткой. Как я могу сказать Babel выполнить код, используя ракетку, а не в хитрости?

Это было полезно?

Решение

http://terohasu.net/blog/2011-09-08-on-racket-support-in-emacs-org-dode.html описывает способ:

При настройке EMACS для настройки, я не знаком с Вавилом или с любым из решений для оценки кода схемы в рамках EMACS в этом отношении. После того, как несколько посмотрели на Вавилон и Низкий лиспМне не удалось настроить Babel для вызова ракетки для оценки списка кода. Вместо этого я прибегал к замене кода Babel для поддержки схемы (в ob-scheme.el) в основном только следующим кодом:

(defun org-babel-execute:scheme (body params)
  (let* ((tangle (cdr (assoc :tangle params)))
         (script-file 
          (if (string-equal tangle "no")
              (org-babel-temp-file "org-babel-" ".rkt")
            tangle)))
    (with-temp-file script-file
      (insert body))
    (let* ((pn (org-babel-process-file-name script-file))
           (cmd (format "racket -u %s" pn)))
      (message cmd)
      (shell-command-to-string cmd)
      )))

Это решение создает новый экземпляр ракетки для каждой оценки и, следовательно, не так эффективно, как решение, основанное на LISP (или аналогичное), но он работает, является более простым, избегает таких проблем с ракеткой, как определение правильного контекста модуля для оценки кода и контекст оценки всегда «чистый», как используется новый экземпляр ракетки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top