LazySeq不能按排序方式转换为Comparable

时间:2018-09-18 22:18:15

标签: clojure

nohup

下面将对字符数组上的clojure 1.9.0进行简单测试,

sort-by

但是为什么另一个测试不能不区分大小写地user=> (sort-by identity [[\B] [\a]]) ([\B] [\a])

sort-by

解决方案

使用https://cloud.google.com/sql/docs/mysql/import-export/importing#importing_csv_files_to_title_short代替mapv即可。

user=> (sort-by (partial map #(Character/toLowerCase %)) [[\B] [\a]])

java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to java.lang.Comparable

2 个答案:

答案 0 :(得分:2)

您不需要地图:

(ns tst.demo.core
  (:require
    [clojure.string :as str] ))

(sort-by  #(.toLowerCase  (str/join %)) [[\a \b] [\B] [\a]])
;=> ([\a] [\a \b] [\B])

答案 1 :(得分:1)

  

但是为什么另一个测试不能不区分大小写地进行排序?

ref返回一个不执行map的惰性序列。 Comparable之所以有效,是因为向量支持mapv,这就是sort-by is using的排序方式。

Comparable