Clojure循环函数仅返回Nil

Clojure循环函数仅返回Nil,clojure,Clojure,下面的函数将文本变量拆分为一个步长的字符序列。唯一的问题是我不知道如何返回结果列表,我需要计算它的Shannon熵,以获得几个步长值 (定义拆分文本[文本步骤] (循环[i 0结果[]] (当(需要从循环返回结果时: (defn split-text [text step] (loop [i 0 result []] (if (> (+ i step) (count text)) result ;; <== here (recur (+ i st

下面的函数将文本变量拆分为一个步长的字符序列。唯一的问题是我不知道如何返回结果列表,我需要计算它的Shannon熵,以获得几个步长值

(定义拆分文本[文本步骤]
(循环[i 0结果[]]

(当(需要从循环返回结果时:

(defn split-text [text step]
  (loop [i 0 result []]
    (if (> (+ i step) (count text))
      result  ;; <== here
      (recur (+ i step)
             (conj result (subs text i (+ i step)))))))

正如下面的答案所说,您应该返回一个错误条件分支的结果。您也可以这样做,以降低代码复杂性:
(defn split text[text step](map(partial apply str)(partition step text)))
谢谢!这正是我需要的。
(defn split-text [text step]
  (loop [i 0 result []]
    (if (> (+ i step) (count text))
      result  ;; <== here
      (recur (+ i step)
             (conj result (subs text i (+ i step)))))))
(defn split-text [text step]
  (loop [tail text result []]
    (if (empty? tail)
      result
      (let [len (min step (count tail))]
        (recur (subs tail len)
               (conj result (subs tail 0 len)))))))