clojure - 在 clojure 中,映射和字符串化 : make it simpler

标签 clojure lisp

映射和字符串化

我有这段 clojure 代码:

(def up (memfn toUpperCase))   
(str "\n" (apply str (interpose "\n" (map up '("one" "two")))) "\n"); "\nONE\nTWO\n"

这段代码完全按照它应该做的去做:获取一个字符串列表,每个字符串都大写,然后用 \n(前后加上)将每个字符串括起来。

但必须有一种方法可以用更优雅的方式来编写它。请帮忙。

最佳答案

你可以合并 map 并插入:

(apply str "\n" (map #(str (up %) "\n") '("one" "two")))

另外,不一定更优雅,有点像 timtowdi 的精神:

(clojure.pprint/cl-format false "~%~{~:@(~A~)~%~}" '("one" "two"))

参见 practical common lisp有关 cl 格式字符串的教程。

关于clojure - 在 clojure 中,映射和字符串化 : make it simpler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284630/

相关文章:

testing - 如何使用 clojure.test 将值从 fixture 传递到测试?

Scala 编写 lisp-like progn 的方法?

functional-programming - 循环是如何用函数式语言实现的

clojure - 为什么要使用阅读器宏#'?

clojure - 为什么在 Ring、Clojure 中使用 merge-with 而不是简单的 'merge'?

scala - 用于 Scala 对象和特征的 Clojure 互操作

Emacs - Clojure 函数突出显示(即 map、reduce、println、get 等)

lambda - 闭包中的变量

visual-studio-code - 如何在 Visual Studio Code 上运行 Scheme?

list - LISP:如何测试两个列表是否具有相同的元素?