gpt4 book ai didi

clojure - 在Clojure中,是否可以在匿名函数中定义匿名函数?

转载 作者:行者123 更新时间:2023-12-04 13:17:17 25 4
gpt4 key购买 nike

例如,解决以下问题

http://projecteuler.net/problem=5

我想出了以下解决方案

(defn div [n] (= 0 (reduce + (map #(mod n %) (range 1 21)))))
(take 1 (filter #(= true (div %)) (range 20 1e11 20)))

假设我想打高尔夫球,希望将第一行作为匿名函数合并到第二行。语言支持吗?

最佳答案

是的,它确实可以,但是您不能嵌套#()阅读器-宏表格,必须使用(fn)表格。

例如:

(#(#(+ %1 %2) 1) 2)

不起作用,因为无法引用外部匿名函数的参数。这被理解为带有两个参数的外部函数和带有零参数的内部函数。

但是您可以使用 (fn...)编写相同的内容:
user=> (((fn [x] (fn [y] (+ x y))) 1) 2)
3

您还可以将 #()形式用于两个匿名函数之一,例如:
user=> (#((fn [x] (+ x %)) 1) 2)
3

因此,您可以像这样内联 div函数(请注意,我们必须将传递给 #()map形式更改为 (fn)形式):
#(= true (= 0 (reduce + (map (fn [x] (mod % x)) (range 1 21)))))

关于clojure - 在Clojure中,是否可以在匿名函数中定义匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com