Solucionado (ver solução)
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