Clojure не может разрешить символ - PullRequest
0 голосов
/ 25 мая 2018

Я новичок в Clojure.Я пытался запустить это и получил не может найти символ parse-to-dict.

(ns noobfile
  (:require '[clojure.string :as str]
            '[noobfile]))

(def my_str "1|John Smith|123 Here Street|456-4567
2|Sue Jones|43 Rose Court Street|345-7867
3|Fan Yuhong|165 Happy Lane|345-4533")
(def my_dict (str/split my_str #"\n"))
(defn pasre-to-dict [x] (str ":" x))
(apply parse-to-dict my_dict)

Ошибка приведена ниже:

CompilerException java.lang.Exception: Found lib name 'clojure.string' containing period with prefix 'quote'.  lib names inside prefix lists must not contain periods, compiling:(/tmp/form-init6237588243498764600.clj:16:1)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: parse-to-dict in this context, compiling:(/tmp/form-init6237588243498764600.clj:28:1) 

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

То, что вы ищете, это map, а не apply.

(map parse-to-dict my_dict)

читайте в документах clojure

0 голосов
/ 25 мая 2018

Я бы пошел с чем-то вроде этого:

(require '[clojure.string :as cs])

(reduce #(let [[x & xs] (cs/split (cs/trim %2) #"\|")]
           (assoc %1 x xs))
        {}
        (cs/split-lines my_str))

;; => {"1" ("John Smith" "123 Here Street" "456-4567"), 
;;     "2" ("Sue Jones" "43 Rose Court Street" "345-7867"), 
;;     "3" ("Fan Yuhong" "165 Happy Lane" "345-4533")}

но на самом деле вы должны прочитать некоторые основы clojure, прежде чем начать, как все предлагали.

0 голосов
/ 25 мая 2018
  1. В предложении require не должно быть кавычек.
  2. Нет причин требовать noobfile.
  3. У вас есть опечатка в (defn pasre-to-dict [x] (str ":" x)).
  4. Использование apply не имеет смысла в этом случае.Возможно, вы захотите изменить функцию parse-to-dict в зависимости от того, чего хотите достичь.

Поэтому вы можете продолжить здесь:

(ns noobfile
  (:require [clojure.string :as str]))

(def my_str "1|John Smith|123 Here Street|456-4567
  2|Sue Jones|43 Rose Court Street|345-7867
  3|Fan Yuhong|165 Happy Lane|345-4533")
(def my_dict (str/split my_str #"\n"))
(defn parse-to-dict [x] (str ":" x))
(parse-to-dict my_dict)

Пожалуйста, сделайте дополнительные исследования самостоятельно, прежде чемзадавать вопрос в следующий раз.

...