2015-03-08 2 views
4

Я использовать орг-режим ведения блога, я использую орг-столпотворение оценить код следующим образом:орг-столпотворение для Haskell не произведений Eval Haskell блок

#+BEGIN_SRC haskell 
import Data.Function (fix) 

f :: Int -> Int 
f = (+ 1) 

main :: IO() 
main = do 
     putStrLn $ show $ f 1 
#+END_SRC 

#+RESULTS: 
: <interactive>:9:25: Not in scope: ‘f’ 

Я нашел орг-столпотворение для использования Haskell infer-haskell, чтобы начать сеанс и оценить код. Я также говорю, что сеанс был создан, и если я не определяю функцию, но напрямую putStrLn «привет», он работает.

надежда любой может исправить ошибку :)

ответ

2
#+BEGIN_SRC haskell 
import Data.Function (fix) 

f :: Int -> Int 
let f = (+ 1) 

main :: IO() 
main = do 
     putStrLn $ show $ f 1 
#+END_SRC 

#+RESULTS: 
: 2 

режим столпотворение Org является выполнение кода на Haskell с GHCI. В ghci вы должны использовать let для объявления функций.

+0

Я действительно задаюсь вопросом, как манипуляторы путаницы извлекают это в исходный файл, так как 'let f' будет недействительным в исходном файле Haskell. Для тех, кто не знаком с запутыванием: http://orgmode.org/manual/Extracting-source-code.html – Codygman

2

В этом article Yoshinari Nomura описывает способ оценки блоков Haskell с использованием runhaskell с помощью скрипта Ruby. Я не понимаю японский, поэтому я не могу перевести детали, но метод позволил мне запустить блоки haskell без необходимости писать специально для интерпретатора.

+1

Это спасло мой день после пробуя в течение 2 часов ... спасибо. –

Смежные вопросы