2017-01-17 8 views
1

Je tente de reproduire le code dans "The Little Schemer" comme je le suis et je rencontre des erreurs.Evaluez le bloc de code mit-scheme en mode org avec geiser et babel

emacs fichier:

;; 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))) 

Je cours M-x Geiser. Cela ouvre une fonctionnalité complète REPL REPL. Mais quand j'évaluer mon bloc de code système src, ce qui suit se produit:

#+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. 

Je suis en mode org lors de l'exécution C-c C-c. MISE À JOUR: J'ai changé d'environnement de ma machine virtuelle Ubuntu à Cygwin. J'ai suivi uileiknarf's Cygwin Emacs guide avec beaucoup de succès. Mon expérience d'apprentissage est de retour sur la bonne voie!

+1

Etes-vous sûr que cela fonctionne directement dans le MIT? Cela devrait être 'lambda', par exemple. –

+0

Quelle version du mode org vous utilisez? Commit 96b410f8 fixé une erreur flagrante dans ob-scheme, mais il peut très bien y en avoir d'autres. Cela est inclus dans 9.0.3 (en fait dans toute version 9.0.x), mais si vous utilisez 8.x, vous ne l'avez probablement pas. Mais notez que même si vous l'avez *, il n'y a aucune garantie que cela fonctionnera: ob-scheme est buggé et n'a pas beaucoup d'utilisateurs jusqu'à maintenant, donc si vous pouvez soumettre des rapports de bogues au ML, ce serait idéal. – Nick

Répondre

1

Votre code scheme doit être quelque chose comme ceci:

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

(lat? '(bacon and eggs)) 

Peut-être que fonctionnera sans erreurs.

+0

Non, malheureusement, la faute de frappe n'est pas le vrai problème: même s'il est corrigé, ob-scheme échoue à évaluer les choses correctement. Comme je l'ai dit, c'est buggé. – Nick