- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试实现 chainl1 的尾递归版本,但即使使用循环递归它也会引发 StackOverflowError。这怎么可能,我能做些什么来改变它?
(defn atest [state]
(when-not (and (= "" state) (not (= (first state) \a)))
(list (first state) (. state (substring 1)))))
(defn op [state]
(when-not (and (= "" state) (not (= (first state) \a)))
(list #(list :| %1 %2) (. state (substring 1)))))
(defn chainl1-helper [x p op]
(fn [state]
(loop [x x
state state]
(if-let [xs (op state)]
(when-let [xs2 (p (second xs))]
(recur ((first xs) x (first xs2)) (second xs2)))
(list x state)))))
(defn chainl1 [p op]
(fn [state]
(when-let [[v s] (p state)]
((chainl1-helper v p op) s))))
(def test-parse (chainl1 atest op))
(defn stress-test [n] (test-parse (apply str (take n (interleave (repeat "a") (repeat "+"))))))
(stress-test 99999)
最佳答案
它打印的最终结果是堆栈
所以这是 REPL 不是你的代码。
将最后一行替换为
(count (stress-test 99999))
13: core_print.clj:58 clojure.core/print-sequential
14: core_print.clj:140 clojure.core/fn
15: MultiFn.java:167 clojure.lang.MultiFn.invoke
user> (set! *print-level* 20)
20
user> (stress-test 9999)
((:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f (:f # \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) \a) "")
user>
关于clojure - loop-recur 怎么可能抛出 StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237880/
我们正在转向 Recurly 进行计费,并计划使用 recurly.js api 在生产环境中生成计费 token ,但与此同时,在其他环境中进行测试真的很难。理想情况下,我希望能够将信用卡信息从我的
我已经实现了 recurly.js 表单,但在加载 recurly.js 时遇到问题。以下是我的代码:
我正在处理我们公司的购物车,其中包含人们可以订阅或直接购买的产品。问题是它应该要求客户在一个订单中添加这两种类型。 问题:是否可以让 Paypal 将选定的项目作为订阅收费,而其他项目作为一次性付款?
我是 Clojure 的新手,为了练习,我尝试对半随机数应用一个简单的算法。 几天前,我在 clojure 的文档中读到循环,以及它们如何使用 recur 工作,所以我尝试用这行代码编写一个循环: (
我没有对问题的准确描述,所以我只是想问一下这是否可能(如果可能的话,一些其他信息会很好)。 一位程序员告诉我,您可以避免由虚函数/多态性引起的运行时开销。他说,为了避免运行时开销,您可以在名为 Cur
我在本地主机 Windows 10 上运行 xampp Apache/2.4.7 PHP 5.5.9 当我尝试调用 Recurly PHP API(API 版本 = 2.7.0)时,它返回此错误 Co
我有一个关于迭代和与迭代类似的 Clojure 库函数的问题。 (defn iterate 2 "Returns a lazy sequence of x, (f x), (f (f x))
(defn matrix-diagonals-odd-p ([matrix] (matrix-diagonals-odd-p matrix 0)) ([matrix offset]
本文整理了Java中jgnash.engine.recurring.YearlyReminder类的一些代码示例,展示了YearlyReminder类的具体用法。这些代码示例主要来源于Github/S
我正在为 this 写一个答案挑战,当我需要给递归函数一个可选参数时。我最终得到了一些相当于: (defn func [a & [b?]] (if b? b? (recur a a
在以下(Clojure)SO问题中:my own interpose function as an exercise 接受的答案是这样的: Replace your recursive call wi
我正在编写一个小型应用程序来为人们处理任务。非常简单,但就表格设计而言,我所坚持的领域是重复性任务的情况,可以是一次、每天、每周或每月。如果每周,则为每周的特定日期。每月是特定的一天。 我有一个任务表
据我了解,在 Clojure 中递归而不使用循环 .. recur 语法对于短序列来说可能不是问题。但是,使用loop .. recur 语法是编写递归函数的首选方法。因此,我想从首选方法开始。 但是
我正在使用基于 json 的递归 api 进行订阅调用,但看起来卡总是按计划值收费。我试图通过在订阅对象中发送 unit_amount_in_cents 来更改计划的单位值,但它不起作用。 以下是通话
我正在开发一个应用程序,需要允许网站管理员安排“事件”并允许访问者预订事件的位置。 为了最大限度地减少管理工作,我需要允许管理员创建一个事件并将其标记为按计划重复发生。在大多数情况下,这将是“每周”,
我正在搜索 Recurlyjs 正常 Paypal 结帐流程的实现示例。除了 Paypal token 之外,我想向用户请求账单信息,但不清楚如何将它们合并在一起使用。 以下是提及正常工作流程但没有详
++++++++++++++ 实际情况:我在一个站点(使用 C# 的 ASP.Net)上工作,系统将有 3 种不同的订阅计划,即每月、每季度和每年。所有订阅计划都有自己的成本和定价。现在,如果系统/管
我已经在 php 中实现了 paypal 定期订阅计划,并且 paypal 经常性还根据重复周期通过 paypal 收费。但是我的系统没有发现下一次经常性付款是否已收费,所以我怎么知道下一次经常性付款
我一直在尝试实现 chainl1 的尾递归版本,但即使使用循环递归它也会引发 StackOverflowError。这怎么可能,我能做些什么来改变它? (defn atest [state] (w
我读过其他人关于在 Clojure 中遇到堆栈溢出问题的问题,问题往往是在某处建立了一个懒惰的序列。这似乎是这里的问题,但对于我的生活,我不知道在哪里。 这是代码,代码之后是一些解释: (defn p
我是一名优秀的程序员,十分优秀!