2

我通过命令在我的 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或其他东西将其刷新并输入。有时,它会正确清除所有输出。

有没有人有任何想法?

4

2 回答 2

1

这不是 OSX 问题,在 ubuntu 10.10 上也发生在我身上。可能与 leiningen AFAIK 使用的 rlwrap 有关。我现在用蛋糕

于 2011-02-02T23:00:59.320 回答
1

碰巧我昨晚在雪豹上做了同样的直播教程,scrape3(打印故事)功能对我来说很好。您问题中的doseq代码也适用于我而不会停止。

如果您在命令行运行“lein version”,您会得到什么输出?我的版本详细信息是:

Java 1.6.0_22 Java HotSpot(TM) 64 位服务器虚拟机上的 Leiningen 1.4.2

干杯,科林

于 2011-02-02T21:18:14.577 回答