Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure能像Haskell一样制作字母表吗?_Haskell_Clojure - Fatal编程技术网

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

Clojure能像Haskell一样制作字母表吗?,haskell,clojure,Haskell,Clojure,Haskell可以做到这一点: ['a'..'z'] 有没有像Haskell那样简单的Clojure表达式?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 \

Haskell可以做到这一点:

['a'..'z']

有没有像Haskell那样简单的Clojure表达式?

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)

如果它不存在,你可以写它

(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)

如果你喜欢箭行动,你可以写

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