haskell 的 org-babel 不适用于 eval haskell 块
org-babel for haskell not works of eval haskell block
我正在使用 org-mode 博客,我使用 org-babel 评估代码如下:
#+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 的 org-babel 使用 infer-haskell 模式启动会话并评估代码。我还说创建了会话,如果我不定义函数而是直接 putStrLn "hello" ,它就可以工作。
希望任何人都可以修复这个错误:)
#+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 的 babel 模式是 运行 带有 ghci 的 Haskell 代码。在ghci中你需要使用let来声明函数。
在此 article 中,Yoshinari Nomura 描述了一种通过 Ruby 脚本使用 runhaskell
评估 Haskell 块的方法。我不懂日文,所以我无法翻译细节,但是这个方法让我可以 运行 haskell 块而不必专门为解释器编写。
我正在使用 org-mode 博客,我使用 org-babel 评估代码如下:
#+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 的 org-babel 使用 infer-haskell 模式启动会话并评估代码。我还说创建了会话,如果我不定义函数而是直接 putStrLn "hello" ,它就可以工作。
希望任何人都可以修复这个错误:)
#+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 的 babel 模式是 运行 带有 ghci 的 Haskell 代码。在ghci中你需要使用let来声明函数。
在此 article 中,Yoshinari Nomura 描述了一种通过 Ruby 脚本使用 runhaskell
评估 Haskell 块的方法。我不懂日文,所以我无法翻译细节,但是这个方法让我可以 运行 haskell 块而不必专门为解释器编写。