Clojure可以像Haskell一样制作字母表吗?

时间:2014-02-18 01:26:27

标签: haskell clojure

Haskell可以这样做:

['a'..'z']

像Haskell一样容易表达Clojure吗?

3 个答案:

答案 0 :(得分:6)

没有简单的等效于Haskell的语法,但有几种选择,仅举几例:

(map char (range (int \a) (inc (int \z))))

(seq "abcdefghijklmnopqrstuwvxyz")

无论哪种方式,结果都是:

(\a \b \c \d \e \f \g \h \i \j \k \l \m \n \o \p \q \r \s \t \u \v \w \x \y \z)

答案 1 :(得分:3)

如果它不存在,你总是可以写它。

(defn letter-range [start end]
  (map char (range (int (.charAt start 0))
                   (inc (int (.charAt end 0))))))

(letter-range "a" "z")
=> (\a \b \c \d \e \f \g \h \i \j \k \l \m \n \o \p \q \r \s \t \u \v \w \x \y \z)

答案 2 :(得分:0)

如果您进入箭头操作,您可以写...

(->> [\a \z]
     (map int)
     (apply #(list %1 (inc %2)))
     (apply range)
     (map char))