2
respostas

Erro de compilação

Oi pessoal. Executando a seguinte função:

(ns soma.core
  (:gen-class))

(defn soma[n]

      (loop [contador 1 soma 0]
          (if (> contador n) soma
          (recur (inc contador) (+ soma contador)))))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!"))

Me deparei com o seguinte erro:

CompilerException java.lang.RuntimeException: No such namespace: soma, compiling:(C:\Users\Alexsander\AppData\Local\Temp\form-init6638168448387501887.clj:1:1)

Para a execução do código, utilizei o seguinte comando:

soma.core=> (soma/soma 5)

Alguém pode me ajudar ?

2 respostas

Olá Alexsander, tudo bem?

Esse erro ocorre pois não foi carregado nenhum namespace com o nome soma.

Para carregar esse namespace você pode usar a seguinte instrução: (require '[soma.core :as soma] :reload).

Isso deve estar acontecendo sempre que você executa um lein repl no diretório soma. Pois a primeira vez que entramos no lein repl não precisamos do namespace. Logo se ao executar lein repl e em seguida executar (soma 10) (por exemplo) deve funcionar.

Espero ter ajudado e bons estudos.

Na verdade mano, o problema pode não ser apenas o namespace e sim algum sintaxe inválida !

Ainda não cheguei no nível desse exemplo aí, mas recomendo fazer parte por parte do código até descobrir onde está errado.