【发布时间】:2011-06-20 05:27:40
【问题描述】:
我通过lein repl 命令在我的 Snow Leopard OS X 机器和我的 Ubuntu linux 机器上运行 Clojure 1.2。我正在学习直播教程https://github.com/swannodette/enlive-tutorial/
当我进入“第三次刮擦”教程并运行此命令时:
(print-stories)
它在 Ubuntu 上按预期工作,但在 OS X 上,它只输出第一个故事,然后只有在我输入一些表达式后才输出其余的故事,无论是数字、a (println "hello world") 还是诸如此类. REPL 在 OS X 上的工作方式似乎有些奇怪——好像缓冲区没有完全刷新它的输出。
我注意到doseq 宏用于print-stories 函数。所以如果我这样做:
tutorial.scrape3=> (doseq [x (map extract (stories))] (println x))
我在 OSX 上得到这个输出:
{:summary , :byline , :headline With Stones and Firebombs, Mubarak Allies Attack}
这只是第一项。如果我然后输入0(或任何有效的表达式)并按回车,我会得到其余的输出:
0
{:summary The Conversation: Long, worthy road to democracy. , :byline , :headline }
{:summary The Frugal Traveler scores a cheap ticket to Malaga, Spain, birthplace of Picasso., :byline , :headline A Taste of Picasso (and Iberian Cuisine)}
{:summary Lay claim to the next great place: four emerging destinations., :byline , :headline Beat the Crowds}
[etc]
我还注意到这种行为并不一致。有时,什么都没有输出,然后我可以通过输入0 或其他内容将其刷新并输入。有时,它会正确刷新所有输出。
有人有什么想法吗?
【问题讨论】:
标签: macos clojure read-eval-print-loop leiningen