gpt4 book ai didi

macros - 宏想在 clojure 中使用符号而不是字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:47 25 4
gpt4 key购买 nike

所以尝试制作类似 haskell lambda 语法的东西,并使用宏,这就是我得到的:

(defmacro / [& all]
(let [args (take-while #(not (= %1 "=>")) all)
argCount (count args)
expr (last (split-at (+ argCount 1) all))]
`(fn ~(vec args) (~@expr))))

(reduce (/ x y "=>" + x y) [1 2 3])

这很好用,但我最不想做的就是让它成为我不需要 "=>" 但可以只使用 =>

关于如何使 => 成为我可以在我所指的上下文中解析的有效符号的任何提示?

最佳答案

将符号的 name 与字符串进行比较:

(defmacro / [& all]
(let [args (take-while #(not (= (name %1) "=>")) all)
argCount (count args)
expr (last (split-at (+ argCount 1) all))]
`(fn ~(vec args) (~@expr))))

关于macros - 宏想在 clojure 中使用符号而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377696/

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