Допустим, у меня есть LazySeq из java.lang.Character, например
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Как я могу преобразовать это в строку? Я пробовал очевидное
(String. my-char-seq)
но это бросает
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Я думаю, потому что конструктор String ожидает примитивный char[] вместо LazySeq. Итак, я попробовал что-то вроде
(String. (into-array my-char-seq))
но он выдает то же исключение. Теперь проблема заключается в том, что into-array возвращает java.lang.Character[] вместо примитивного char[]. Это расстраивает, потому что я фактически генерирую свою последовательность символов, как это
(map #(char (Integer. %)) seq-of-ascii-ints)
В основном у меня есть последовательность целых чисел, представляющих символы ASCII; 65 = A и т. д. Как видите, я явно использую функцию приведения примитивного типа (char x).
Это означает, что моя функция map возвращает примитивный char, а функция Clojure map в целом возвращает java.lang. Символьный объект.