Advertisement
Guest User

Clojure stack overflow (2)

a guest
May 11th, 2012
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (require '[clojure.java.io :as io])
  2.  
  3. ;; Will reproduce stack overflow if this file has >= 10000 lines.
  4. (def input-file "/home/xgp/tmp/def")
  5.  
  6. (defn make-reader [input]
  7.   (if (string? input)
  8.     (io/reader input)
  9.     (first input)))
  10.  
  11. (defn read-line-or-nil [input]
  12.   (let [reader (make-reader input)]
  13.     (if-let [lines (seq (line-seq reader))]
  14.       [reader lines]
  15.       (do (. reader close)
  16.           nil))))
  17.  
  18. (defn read-inputs [inputs]
  19.   (keep read-line-or-nil inputs))
  20.  
  21. (let [inputs [input-file]]
  22.   (loop [sq (read-inputs inputs)]
  23.     (when-let [sq (seq sq)]
  24.       (let [[[_ [line]]] sq]
  25.         (println line "recuring")
  26.         (recur (read-inputs sq))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement