我通过命令在我的 Snow Leopard OS X 机器和我的 Ubuntu linux 机器上运行 Clojure 1.2 lein repl
。我正在阅读 enlive 教程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
或其他东西将其刷新并输入。有时,它会正确清除所有输出。
有没有人有任何想法?