在Clojure中编写累加器函数

栏目: 编程语言 · Clojure · 发布时间: 6年前

内容简介:我想知道如何编写很容易理解它是如何工作的,但是我无法在Clojure中重新创建它 – 它不会累积但只返回i的总和和n的初始给定值.关键是incf(在Common Lisp版本中)或=(在JavaScript中).

我想知道如何编写 Revenge of the Nerds 文章中包含的累加器示例.

很容易理解它是如何工作的,但是我无法在Clojure中重新创建它 – 它不会累积但只返回i的总和和n的初始给定值.

关键是incf(在Common Lisp版本中)或=(在JavaScript中).

换句话说:如何改变引用函数的状态?我已经看到了一些关于变量变量的例子,但他们看起来不是 precisely pretty 吗?

不要哎呀!在为时已晚之前保存自己!无缘无故地改变状态不是Clojure所鼓励的,所以当然它不像普通的lisp那样方便.

但严重的是,这是解释闭包的经典示例,虽然它不是Clojure中非常有用的一个,但很高兴知道翻译.你必须写下这样的东西:

(defn foo [n]
  (let [acc (atom n)]
    (fn [i] (swap! acc + i))))

翻译自:https://stackoverflow.com/questions/8442524/writing-an-accumulator-function-in-clojure


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息检索

信息检索

David A.Grossman、Ophir Frieder / 张华平 / 人民邮电出版社 / 201008 / 49.00元

随着Google、百度等搜索引擎公司的崛起,信息检索已经成为令人振奋的热门研究领域。 本书从发展的角度描述了ad hoc信息检索,讨论了用来实现大规模数据检索的最新算法。详细介绍了推理网络和系统的效率,并且对每种方法都给出了详细可行的实例。此外,本书整合了非结构化和结构化数据的处理技术,是其他教材所不具备的。第2版新增加了IR语言模型和跨语言检索。还讨论了许多当前的热点话题,如XML、P2P......一起来看看 《信息检索》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换