【问题标题】:Clojure REPL gets stuck printing doseq output in OS X but not on LinuxClojure REPL 在 OS X 上打印 doseq 输出时卡住了,但在 Linux 上却没有
【发布时间】: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


    【解决方案1】:

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

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

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

    干杯, 科林

    【讨论】:

    • Leiningen 1.3.1 on Java 1.6.0_22 Java HotSpot(TM) 64-Bit Server VM
    • 好的,谢谢。我安装了 1.4.2 版本,问题似乎已解决
    【解决方案2】:

    这不是 OSX 问题,我在 ubuntu 10.10 上也遇到过这种情况。可能与 leiningen AFAIK 使用的 rlwrap 有关。我现在使用cake

    【讨论】:

    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2013-09-05
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多