Я изучаю Clojure.
Чтобы попрактиковаться, я начал переписывать Java-приложение, которое я написал для сына для решения неравенств (например, 3 + 2? 7).
В Java ясделал (обратите внимание, используя экранирующие символы обратной косой черты)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class JavaTest {
public static void main(String[] args) throws Exception {
System.out.print("3 + 2 ? 7\b\b\b");
System.out.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();
}
}
и увидите ожидаемый результат: курсор помещается в положение знака вопроса, и когда я пишу символ, он перезаписывает знак вопроса. правильный вывод из Java
Но когда я делаю то же самое (я верю в это) в Clojure
(print "3 + 2 ? 7\b\b\b")
(flush)
(let [reader (java.io.BufferedReader. *in*)]
(.readLine reader))
Я вижу, что курсор находится в правильном положении в течение миллисекунди затем перемещается в конце строки.И когда я помещаю символ, он помещается в самый конец строки, которую я напечатал. неверный вывод из clojure
В качестве обходного пути я мог бы использовать библиотеку clojure-lanterna, как предлагалось здесь , но я бы хотел решить такую простую вещь без каких-либобиблиотеки (как на самом деле я делал в Java).
Есть идеи по этому поводу?Или, может быть, кто-то может объяснить причину поведения.Я пытался найти его в источниках Clojure, но безуспешно.
Заранее спасибо!