请在2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面了解有关此如何工作的更多信息。

0
Clojure
编辑

如果使用cat转换器而不是调用(concat p pad),代码将更快

(defn partitionv [n step pad coll]
  (lazy-seq
    (when-let [s (seq coll)]
      (let [p (into [] (take n) s)]
        (if (= n (count p))
          (cons p (partitionv n step pad (nthrest s step)))
          (list (into [] (take n) (concat p pad))))))))

可以改为

(defn partitionv2 [n step pad coll]
  (lazy-seq
    (when-let [s (seq coll)]
      (let [p (into [] (take n) s)]
        (if (= n (count p))
          (cons p (partitionv n step pad (nthrest s step)))
          (list (into [] (comp cat (take n)) [p pad])))))))
为了回答编辑中提出的问题——这是实际的标准Markdown语法。 :) https://markdownguide.cn/basic-syntax#code-blocks-1 使用编辑按钮比手动缩进容易。

1 答案

0

您只是在更改最后一个可能填充的值的结构,对吧?

这似乎难以置信它会“快得多”。您在测试什么?

嗯,很有趣,连续几个基准测试中似乎快得多... 但是有时情况相反...
...