'Clojure result returned is always function rather then result

So I'm having trouble in that every time I evaluate a Clojure function, or type in in a REPL and call it, I'm not getting the result but something like #function[clojure.core/map/fn--5880].

What's causing this issue? I should be getting a result like a list here but I'm not. If I were to define everything in the REPL and run it, the result shows up just fine.

It mostly doesn't matter what I put in, Anything marginally advanced will cause this.

More specifics:

Upon request.

    (def filename "tester.csv")
    
    (defn parse
      "Convert a CSV into rows of columns"
      [string]
      (map #(clojure.string/split % #"\n")))

In REPL:

    (parse (slurp filename))


Solution 1:[1]

In this specific case, you got function[clojure.core/map/fn--5880] and we can deduce from the name that this is a helper function defined in clojure.core/map. This is a transducer, which is returned when map is invoked only with one parameter. If you want a collection, give map a function and (at least) one collection.

Solution 2:[2]

What you want is:

(defn parse
  "Convert a CSV into rows of columns"
  [string]
  (clojure.string/split string #"\n"))

(parse (slurp "tester.csv"))

But csv you need to parse, because the delimiter can be part of the content of each cell (e.g. within quotation marks).

For that look at https://github.com/clojure/data.csv .

There in the Readme, you can see:

;; CLI/deps.edn dependency information:
;; so you add this into your `deps.edn`

org.clojure/data.csv {:mvn/version "1.0.1"}

;; Leiningen dependency information
;; and this you need into your project dependencies:

    [org.clojure/data.csv "1.0.1"]

;; Maven dependency information:
;; and this would be the maven dependency information,
;; if you would need it:

    <dependency>
      <groupId>org.clojure</groupId>
      <artifactId>data.csv</artifactId>
      <version>1.0.1</version>
    </dependency>

;; and this is how you use it:

(require '[clojure.data.csv :as csv]
         '[clojure.java.io :as io])

(with-open [reader (io/reader "in-file.csv")]
  (doall
    (csv/read-csv reader)))

(with-open [writer (io/writer "out-file.csv")]
  (csv/write-csv writer
                 [["abc" "def"]
                  ["ghi" "jkl"]]))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 erdos
Solution 2 Gwang-Jin Kim