Оценить блок кода mit-scheme в организационном режиме с помощью geiser и babel

Я пытаюсь воспроизвести код в «Маленьком интригане» по ходу дела и сталкиваюсь с ошибками.

.emacs-файл:

;; Melpa package contains geiser
(require 'package)
(add-to-list 'package-archives
             '("melpa-unstable" . "http://melpa.org/packages/" t)
(package-initialize)

;; Setup geiser and babel
(require 'scheme)
(require 'python)
(setq geiser-active-implementations '(mit))
(custom-set-variables
 '(scheme-program-name "mit-scheme"))
(org-babel-do-load-languages
 'org-babel-load-languages
 '((scheme . t)
   (python . t)
   (sh . t)))

Я запускаю M-x geiser. Это открывает полнофункциональный Mit REPL. Но когда я оцениваю блок кода src схемы, происходит следующее:

#+BEGIN_SRC scheme
(define lat?
  (lamda (l)
    (cond
     ((null? l) #T)
     ((atom? (car l)) (lat? (cdr l)))
     (else #f))))
(lat? (bacon and eggs))
#+END_SRC

#+RESULTS:
: An error ocurred.

Я нахожусь в организационном режиме при запуске C-c C-c.

ОБНОВЛЕНИЕ: я переключил среду с виртуальной машины Ubuntu на Cygwin. Я с большим успехом следовал руководству uileiknarf по Cygwin Emacs. Мой опыт обучения снова в порядке!


person Conner    schedule 17.01.2017    source источник
comment
Вы уверены, что это работает напрямую в Массачусетском технологическом институте? Например, это должно быть lambda.   -  person Michael Vehrs    schedule 17.01.2017
comment
Какую версию организационного режима вы используете? Коммит 96b410f8 исправил одну вопиющую ошибку в об-схеме, но вполне могут быть и другие. Это включено в 9.0.3 (фактически в любую версию 9.0.x), но если вы используете 8.x, у вас, вероятно, его нет. Но учтите, что даже если он у вас есть, нет никакой гарантии, что он будет работать: схема ob-scheme глючит и пока не имеет большого количества пользователей, поэтому, если вы можете отправлять отчеты об ошибках в МЛ, это было бы идеально.   -  person NickD    schedule 18.01.2017


Ответы (1)


Ваш код scheme должен выглядеть примерно так:

(define lat?
  (lambda (l)
    (cond
     ((null? l) #t)
     ((not (pair? (car l)))
      (lat? (cdr l)))
     (else #f))))

(lat? '(bacon and eggs))

Возможно, что будет работать без ошибок.

person Michael Vehrs    schedule 19.01.2017
comment
Нет, к сожалению, опечатка не является настоящей проблемой: даже после исправления об-схема не может правильно оценить ситуацию. Как я уже сказал, это глючит. - person NickD; 21.01.2017