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

5
哈斯克尔可以实现这个功能:
['a'..'z']

像 Haskell 一样有易于表达的 Clojure 吗?

1
请生成一个从A到Z的字符序列,使用Clojure编程语言。 - ntalbs
3个回答

7

没有直接相当于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)

4
如果它不存在,您总可以编写它。
(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)

0
如果你喜欢箭头操作,你可以编写...
(->> [\a \z]
     (map int)
     (apply #(list %1 (inc %2)))
     (apply range)
     (map char))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接