Clojure REPL зависает при печати вывода дозыq в OS X, но не в Linux

Я запускаю Clojure 1.2 как на своей машине Snow Leopard OS X, так и на моей Linux-системе Ubuntu с помощью команды 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 или что-то в этом роде, и войти. Иногда он правильно очищает весь вывод.

У кого-нибудь есть идеи?


person dan    schedule 02.02.2011    source источник


Ответы (2)


Так случилось, что прошлой ночью я сделал то же самое руководство по enlive для снежного барса, и функция scrape3 (print-stories) отлично работает для меня. Код дозы в вашем вопросе у меня тоже работает без остановки.

Какой результат вы получите, если запустите «lein version» в командной строке? Детали моей версии:

Leiningen 1.4.2 на Java 1.6.0_22 Java HotSpot(TM) 64-битный сервер ВМ

Привет, Колин

person colinf    schedule 02.02.2011
comment
Leiningen 1.3.1 на Java 1.6.0_22 Java HotSpot(TM) 64-битный сервер ВМ - person dan; 03.02.2011
comment
Хорошо спасибо. Я установил версию 1.4.2, проблема исправлена. - person dan; 03.02.2011

Это не проблема OSX, это случилось со мной и на Ubuntu 10.10. Может быть связано с rlwrap, который используется leiningen AFAIK. Сейчас я использую cake.

person 0x89    schedule 02.02.2011
comment
Торт заменяет лейн? - person dan; 03.02.2011
comment
Вроде. Он совместим с большинством файлов leiningen project.clj и имеет некоторые преимущества по сравнению с leiningen (например, постоянная JVM). См.: github.com/ninjudd/cake. Хотя, похоже, на Лейнингене больше активности. - person 0x89; 03.02.2011
comment
также см. stackoverflow.com/questions /3906276/ - person 0x89; 04.02.2011