Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Dúvida no Ex. 6 da Aula 1 - Primeiros Passos com Programação Funcional

Quando faço a chamada ao total de vidas no repl é me apresentada a seguinte mensagem

user=> total-de-vidas

CompilerException java.lang.RuntimeException: Unable to resolve symbol: total-de-vidas in this context, compiling:(/private/var/folders/w_/855zv9gx3dvcy75q6c3q61kh0000gn/T/form-init8523473270751116170.clj:1:1062) 
user=> ( total-de-vidas )

CompilerException java.lang.RuntimeException: Unable to resolve symbol: total-de-vidas in this context, compiling:(/private/var/folders/w_/855zv9gx3dvcy75q6c3q61kh0000gn/T/form-init8523473270751116170.clj:1:1) 
user=>
11 respostas

Oi Fabio,

você chegou a definir a constante antes? Na mesma interação do REPL, você vai precisar ter definido:

(def total-de-vidas 6)

Sim, no arquivo, não no terminal, tenho que fazer pelo terminal primeiro?

Se já criou o projeto, e definiu a variável "total-de-vidas" no arquivo core.clj, você não precisa fazer mais nada. mas para ter acesso ao total-de-vidas vocẽ precisa estar na pasta do projeto. No caso, a pasta que você deve ter criado se chama 'forca', então basta mudar para o diretório 'forca' (cd forca) iniciar o repl, e testar com 'total-de-vidas', que deve retornar '6'.

executando na pasta do projeto

forca.core=> (total-de-vidas)

CompilerException java.lang.RuntimeException: Unable to resolve symbol: total-de-vidas in this context, compiling:(/private/var/folders/w_/855zv9gx3dvcy75q6c3q61kh0000gn/T/form-init3639722258509574490.clj:1:1) 

executando na pasta do src

forca.core=> (total-de-vidas)

CompilerException java.lang.RuntimeException: Unable to resolve symbol: total-de-vidas in this context, compiling:(/private/var/folders/w_/855zv9gx3dvcy75q6c3q61kh0000gn/T/form-init8325519952670991771.clj:1:1) 

Etnão, voê pode postar exatamente o conteúdo do arquivo core.clj do seu projeto?

Deve ter alguma coisa errada com a definição de total-de-vidas.

De qualquer forma, mesmo quando estiver correto, você deve receber um erro se tentar a constate dessa maneira, mas vai ser um ClassCastException.

Para testar, da pasta do projeto memso execute total-de-vidas sem parenteses, ou faça alguma operação, como (* 1 total-de-vidas), para imprimir o seu valor. Mas como o erro é outro, deve ter alguma coisa no core.clj errada mesmo.

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


(def total-de-vidas 6)

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

Bom, confesso que agora estou intrigado pois não há nada de errado com o código que você postou. Até fiz um teste com ele e funcionou como era de se esperar. Sei que vai soar repetido, mas tem certeza de que abriu o terminal na raíz do projeto(É a pasta com o README.md)? Você criou o projeto com o comando lein new app forca? E se tentar executar o -main a mensagem "Hello, World!" é impressa na tela?(-main) (com parênteses)

Acredito que tenha algum erro na instalação do clojure, finalizei o curso fazendo passo a passo no terminal, algumas coisas não foi possível fazer, mas entendi o conceito pelo menos, valeu a ajuda

Sobre o erro aqui eu respondi a uma pergunta no forum: Espero que ajude: Abs.

Siga esses passos: 1 - Saia do user (exit) 2 - Entre na pasta do seu projeto forca, por exemplo: cd "/SeuUsuario/bin/forca " 3 - Execute lein repl 4 - Deve aparecer agora, forca.core=> e não mais user=>. 5 - Execute: forca.core=> tota-de-vidas 6 - Deve ter o resultado: 6

Importante: - alterar o arquivo core.clj no diretório forca. - sempre que alterar o arquivo você deve fazer o reload no terminal, nesse caso o comando é esse (require 'forca.core :reload). Espero ter ajudado e Boa Sorte!

Também creio que o erro seja de instalação, pois o meu está acontecendo exatamente a mesma coisa que o Fábio relatou. Uma pena...

solução!

Já fiz de tudo possível, consegui executar em outra máquina, essa com windows, a versão Mac não funcionou