首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在clojure/lisp中使用'for‘来只返回值而不创建列表?

在Clojure/Lisp中,可以使用for表达式来生成一个列表。但是,如果你只想要返回值而不创建列表,你可以使用doseq函数。

doseq函数类似于for表达式,但它不会创建一个新的列表。它用于执行副作用,例如打印输出或修改可变状态。以下是如何在Clojure/Lisp中使用doseq来只返回值而不创建列表的示例:

代码语言:txt
复制
(doseq [x [1 2 3 4 5]
        :let [result (* x 2)]]
  (println result))

在上面的示例中,doseq循环遍历了一个向量[1 2 3 4 5],并为每个元素x计算了结果(* x 2)。然后,它使用println函数打印出结果。注意,doseq并不返回任何值,它只执行副作用。

如果你只想要返回值而不执行副作用,你可以使用map函数。map函数接受一个函数和一个序列,并将该函数应用于序列中的每个元素,返回一个新的序列。以下是如何在Clojure/Lisp中使用map来只返回值而不创建列表的示例:

代码语言:txt
复制
(defn double [x]
  (* x 2))

(map double [1 2 3 4 5])

在上面的示例中,我们定义了一个函数double,它将一个数值乘以2。然后,我们使用map函数将double函数应用于向量[1 2 3 4 5]中的每个元素,返回一个新的序列(2 4 6 8 10)

希望这个回答能够满足你的需求。如果你对其他问题有任何疑问,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Clojure与LispClojure与Lisp

Clojure 是完全的,真正意义上的神圣的lisp语言的一个方言. lisp语言因为其无以伦比强大能力和几乎无穷的表达力获得了盛誉,Clojure自然也例外....自稳定运行的Common Lisp出现起,再有各机构按各自所需开展后续Lisp,包括1990年自欧洲用户的EuLisp、运行于Java虚拟机的Clojure、受到Maclisp影响创的Emacs...在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,列表则是Lisp的基本数据结构。 用一门语言自己的数据结构表达该语言,这被证明是非常强大的功能。...Clojure 还是一个动态类型的语言 我们可以选择添加类型信息提高代码的关键路径的性能。...Clojure是这样的有潜力、接地气,那么如果你要选择一门新语言玩玩,选它选什么?

1.9K30
  • Clojure 运行原理之编译器剖析

    为了更加具体描述 Clojure 运行原理,会分两篇文章介绍。 本文为第一篇,涉及到的主要内容有:编译器工作流程、Lisp 的宏机制。.../use时使用 eval,当调用clojure.core/eval时使用 这三个入口函数都会依次调用 macroexpand、analyze 方法,生成Expr对象,compile 函数还会额外调用...Clojure 里面通过defmacro函数创建宏,它会调用var的setMacro函数来设置元信息macro为true。...根据 JVM bytecode 的规范,每个.class文件都必须由类组成, Clojure 作为一个函数式语言,主体是函数,通过 namespace 封装、隔离函数,你可能会想当然的认为每个 namespace...IPersistentVector ret = PersistentVector.EMPTY; for (int i = 0; i < args.count(); i++) // 这里递归的求列表每项的值

    99930

    clojure基础入门(一)

    欢迎进入clojure的世界。  ? 变量 Clojure的变量可以def关键字声明:  ? clojure数据类型是弱类型,对应java的object,然后通过变量名直接调用。...,使其像填充列表一样编写代码。...加参数后,再次调用需要传入值,如果传会报异常。 ? 下面在函数内部使用a函数参数,如果想要拼接的话,可以在内部使用str函数,用它返回的值当成Get函数的参数:  ?...这里有三层嵌套,首先(= age 18)判断返回是否等于18,作为if判断该返回哪个字符串的依据,再根据if确定的字符串作为函数的返回值。...clojurelisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以只要看到后面带问号的函数名,就知道这一定是一个判断语句。 user=> (fn?

    1.5K30

    clojure基础入门(一)

    欢迎进入clojure的世界。  ? 变量 Clojure的变量可以def关键字声明:  ? clojure数据类型是弱类型,对应java的object,然后通过变量名直接调用。...,使其像填充列表一样编写代码。...加参数后,再次调用需要传入值,如果传会报异常。 ? 下面在函数内部使用a函数参数,如果想要拼接的话,可以在内部使用str函数,用它返回的值当成Get函数的参数:  ?...这里有三层嵌套,首先(= age 18)判断返回是否等于18,作为if判断该返回哪个字符串的依据,再根据if确定的字符串作为函数的返回值。...clojurelisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以只要看到后面带问号的函数名,就知道这一定是一个判断语句。 user=> (fn?

    1.3K40

    Clojure 学习入门(1)—— 学习资料

    下一代的语言 每一年,在世界范围内的众多机构的都有很多有才华的计算机科学家通过发表成千上万的论文阐发它们新的和有趣的想法。...Clojure虽然有很强的学术背景支持,但是绝不是一门在象牙塔的语言,每天都有众多开发者在各自的开发领域内使用它。 动态强有力 (没错,它是lisp!)...Clojure 是完全的,真正意义上的神圣的lisp语言的一个方言。 lisp语言因为其无以伦比强大能力和几乎无穷的表达力获得了盛誉,Clojure自然也例外。...但是,历史上也有对lisp进行诋毁的人,或许称为抱怨更为合适. lisp发展过程,没有完整的规范, 各种兼容的实现,陈旧落伍的限制.cruft accumulate 在其存在的四五十年里一直存在....但是没有改变lisp "代码也是数据" 的哲学. Clojure 语言在直觉和观感上比历史上的lisp更易于阅读.

    1.4K10

    一名Clojurian的Emacs配置

    这就不得不提起Clojure这门lisp方言,出于对lisp和函数式编程的痴迷,我选择了基于JVM的Clojure作为自己的偏好语言,emacs天生为lisp而生。...所以胸臆之中涌动一股浩然之气,决心学起emacs lisp,把emacs的配置从头来过。 从『头』开始 init.el文件位于~/.emacs.d目录之下,如果没有,自行创建一份即可。..."http://melpa.org/packages/")的点号(dot)表示法也比较奇怪,其实这是lisp的Dotted pair表示法,用法和普通的列表类似,但因为是pair的缘故,你可以使用(...接下来,只需要使用c-h v和c-h f查看elisp定义的变量函数就能很快上手自行配置。...按照惯例,我在~/.emacs.d目录下建立一个lisp目录用于存放所有自定义的模块文件,随后在init.el中加入下面这句代码,意在把lisp目录加到emacs的加载路径列表里。

    2.8K20

    来来来,咱们元编程入个门

    lisp(以下谈到的 lisp,皆为其方言 clojure)是一门直接把类似 AST 的语法暴露给程序员的语言。因此,它的语法看起来会非常别扭: ?... elixir 虽不是 lisp 族的语言,语法和 lisp 截然不同,但它也从语言设计之初,就考虑把语法树暴露给程序员: ?...下面是 elixir 写一个最简单的例子(先别管语法),这个例子定义了 unless,使用过 ruby 的同学应该对此陌生。...注意这里当我们要获取原始表达式的值时,我们需要使用 unquote 获取表达式的值,而非表达式的 AST。在合适的地方 unquote 是写 macro 的基本能力。...在 lisp 里,unquote 是一个简单的符号(比如 clojure 用 ~ 表示 unquote),所以很容易误用。

    946100

    Lisp语言简介_c++是什么语言

    大家好,又见面了,我是你们的朋友全栈君 摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP 因为ClojureLisp的一种的方言,所以我们可以先来了解一下Lisp...这个比较小众的编程到底是什么~ ————————————————————————— LISP(全名LISt Processor,即列表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言...在Unix/Linux系统,还有一种和Emacs一起的Emacs LispEmacs正是用Lisp作为扩展语言进行功能扩展的)非常流行,并建立了自己的标准。...Lisp的表达式是一个原子(atom)或表(list),原子(atom)又包含符號(symbol)與數值(number);表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号:...反之一个被引用的表仅仅被视为表 > (atom ‘(atom ‘a))() 引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了 Lisp 最为与众不同的特点——代码和数据使用相同的结构表示

    2.3K20

    (cljsrun-at (JSVM. :browser) 简单类型可不简单啊~)

    在任何Lisp方言中Symbol作为标识符(Identity),命名空间名称、函数名称、变量名称、Special Form名称等等。...由于symbol根据它在列表的位置解析为Special Form或Var,为阻止这一过程需要通过quote函数来处理,'就是quote的reader macro。...Macro还是函数还是值,因此需要通过#'阻止,#'就是var的reader macro。...面向对象,没有函数只有方法,方法的构造前必须先构建其所依赖的类型或类型实例。  ...总结  本文较详尽地介绍了Keyword,然后稍微介绍了Symbol、Var和Special Form,Lisp“代码即数据,数据即代码”需要结合Symbol的解释过程说明效果才有所体现,这个由于篇幅较大

    71070

    别忙着撒欢儿了,送你一本《前端函数式攻城指南》可好?

    不管是Google力推的Go、学术派的Scala与Haskell,还是Lisp的新方言Clojure,这些新的函数式编程语言都越来越受到人们的关注。...当然,不仅是后端函数式编程语言层出穷,前端也不甘示弱。...我两次都以Clojure结尾,是因为我喜欢把重点留到最后。Clojure独特于其他语言,它既是一门新的语言、一门函数式编程范式的语言,又流淌着古老的血液——Lisp。...这是我选择用Clojure诠释函数式编程的原因之一。 那么为什么我要选JavaScript作为函数式编程的目标呢?...这一切的一切,都让我忍不住要帮Fogus出一本续集 用JavaScript实现其他函数式编程语言Clojure甚至是Haskell的奇技淫巧,让大家进一步感受用JavaScript这门不完美的语言同样可以编写出优雅的函数式代码

    82170

    实用的函数式编程

    那么, 你应该使用哪种函数式编程语言呢? 我最喜欢的是 Clojure. 因为 Clojure 极其简单. 它是 Lisp 的一个方言, Lisp 是一个十分简单和漂亮的语言....在这里, 稍微展示一下: 在 Java 的一个函数: f(x); 现在, 将它转换为 Lisp 的一个函数, 简单地将第一个括号移到左边即可: (f x)....现在, 你已经学会 95% 的 Lisp 和 90% 的 Clojure 了. 对这些语言而言, 这些括号就是全部的语法了. 极其简单. 你可能以前见过 Lisp 程序, 不过不喜欢这些括号....此外, Clojure 基于 JVM, 它完全可以访问 Java 库, 和任何其他的 Java 框架和库. 它的互用性快速便捷....故而, 在 Clojure , 所有的函数调用都是列表. 列表可以直接被代码操作. 所以, 一个程序也可以构造和执行其他程序. 最后说一句, 函数式编程十分重要. 你应该去学习它.

    1.1K20

    Storm创始人Nathan Marz:反馈即一切

    它的性能要强大多了,我还记得TI-82允许用户使用26个变量(从字母“a”到字母“z”),TI-89随便你想拥有多少变量都可以,想一想真是太了不起了。 ?...** Nathan:我认为,设计软件系统完全就是学习如何在行进开发。...它允许我轻松地使用不可变性及函数式编程等技术,令我的效率大幅提高。基于Lisp的动态特性,使我总能将Clojure塑造成符合最佳抽象的状态。...Nathan:我之所以使用Emacs,是因为它是最理想的Clojure编程环境(它们都有Lisp的渊源)。我惊讶于一款工具在提供如此强大功能的同时,还能如此灵活地随心定制。...我的配置相当简单,在Emacs使用REPL做探索式开发和交互测试。我的电脑里还有不计其数的设计笔记和构思,都以纯文本格式保存。我的待办事项列表,就是一个文本文件。

    91340

    Clojure 学习入门(18)—— 数据类型

    对于有动态语言背景的人来说是很自然的事情,而那些使用静态语言的人需要一些转变。 Clojure的类型既简单又复杂。...如果只是作为数据结构不是可执行代码来使用列表,只需要给列表加一个单引号作为前缀即可。这告诉Clojure将其作为数据结构对待,不是将其当作Clojure形式对其求值。...从这一点看,相比于列表,向量更像是数组。总的来说,对于很多应用来讲向量更好,因为跟列表相比向量毫无劣势而且更快。 向量在Clojure程序的字面表示是使用方括号。...要创建一个结构映射的高性能访问函数,使用 accessor 函数。它接收一个结构定义和一个键作为参数,并返回一个一等888函数作为返回值。这个函数接收一个结构映射作为参数,并返回一个值。...在一个Clojure程序的上下文里,使用映射十分不错,因为可以通过普通的方式操作它们,不必为不同的类的对象创建操作的方法。 assoc 映射结合函数assoc接收一个映射和一些键/值对作为参数。

    2.3K10

    Clojure 开发那些事

    基本的数据结构可以参考其官方网站上到资料,我发现一个特点,Lisp 语言的英文介绍往往过于精炼,不适合初学者直接阅读,为了夯实基础,还是建议大家找本书来看,看书的好处是不仅仅知道某个知识点,更重要的是了解不同知识点之间的区别与联系...使用比较简单,通过 Intellj 插件管理器安装后即可使用,第一次使用时需要设置下快捷键类型 Emacs + Cider 作为一门 Lisp 方言,怎么能没有一个好的 Emacs mode 呢?...第三方类库的选择 由于 Clojure 语言定位就是个寄宿语言,所以无论是 Web 框架,还是数据库连接池,Clojure 里都有与 Java 版相对应包装类库,大家不必担心要使用某个功能,没有相应库的问题...其实,在使用第三方类库之余,多去了解其实现,代码从 Github 上 Clone 下来,慢慢看,Clojure 里面提供了很多实用的小方法,像partition, juxt, group-by等等不一足...nrepl Clojure 的 REPL 可以连接到远程服务器上的进程,直接对进程的函数或变量进行修改,这是非常便利的,对于很多运行时的错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程

    1.6K20

    不同编程语言的“Hello World”

    所有程序员在其职业生涯,都至少接触过一个经典的“Hello, World!” 程序。通常程序员会使用多种编程语言,多的甚至实现了十几种。...B - 1969 创建于1969年的B语言现在已经过时了,但它仍然扮演着重要的角色,因为它激发了C语言的灵感,C语言至今仍被广泛使用。   main(){  putstr("Hello world!...Scheme - 1975 Scheme创建于1975年,是一种支持函数式和命令式编程的多范式编程语言。这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建Clojure。 ...Clojure - 2007 Clojure是一种经过编译的跨平台函数式编程语言,旨在创建安全且易于分发的程序。Clojure是基于Lisp的三大语言之一。...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用

    47920

    编程语言发展70年,用50种不同语言输出「Hello World」

    通常程序员会使用多种编程语言,多的甚至实现了十几种 还有一种称为TTHW(Time to “Hello, World!”)的方法,衡量程序员创建一个新的“Hello, World!”程序的时间。...B - 1969 创建于1969年的B语言现在已经过时了,但它仍然扮演着重要的角色,因为它激发了C语言的灵感,C语言至今仍被广泛使用。...Scheme - 1975 Scheme创建于1975年,是一种支持函数式和命令式编程的多范式编程语言。这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建Clojure。...Clojure - 2007 Clojure是一种经过编译的跨平台函数式编程语言,旨在创建安全且易于分发的程序。Clojure是基于Lisp的三大语言之一。...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用

    64520

    近 50 种花式 “Hello, World”

    所有程序员在其职业生涯,都至少接触过一个经典的“Hello, World!” 程序。通常程序员会使用多种编程语言,多的甚至实现了十几种。...07 B - 1969 创建于1969年的B语言现在已经过时了,但它仍然扮演着重要的角色,因为它激发了C语言的灵感,C语言至今仍被广泛使用。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建Clojure。 (display "Hello, World!")...42 Clojure - 2007 Clojure是一种经过编译的跨平台函数式编程语言,旨在创建安全且易于分发的程序。Clojure是基于Lisp的三大语言之一。...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用

    51620

    50种不同编程语言的“Hello, World”,你会写几种?

    所有程序员在其职业生涯,都至少接触过一个经典的“Hello, World!” 程序。通常程序员会使用多种编程语言,多的甚至实现了十几种。...07 B - 1969 创建于1969年的B语言现在已经过时了,但它仍然扮演着重要的角色,因为它激发了C语言的灵感,C语言至今仍被广泛使用。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建Clojure。 (display "Hello, World!")...42 Clojure - 2007 Clojure是一种经过编译的跨平台函数式编程语言,旨在创建安全且易于分发的程序。Clojure是基于Lisp的三大语言之一。...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用

    1.2K20
    领券