[Cs254f11] lets that depend on other things that have been let in the same context

Lee Spector lspector at hampshire.edu
Fri Dec 2 12:08:18 EST 2011


Josiah,

You just have too many brackets in there. In a "let" you can define multiple bindings, each with its own symbol and init-expression, but you should just list them all in the same single set of [] brackets. So you probably want this:

(defn prediction-test
  [psize gens]
  (let [best-fit (evolve_best_fit psize gens)
        reference-error (error best-fit)
        test-error (test_error best-fit)
        error-difference (Math/abs (- reference-error test-error))]
    (println "The shortest best fit individual over" gens "generations with a population size of" psize)
    (println "was" best-fit)
    (println "It had an error of" reference-error "against the reference songs, and an error of")
    (println test-error "against the test songs, giving a difference of" error-difference)))

 -Lee


On Dec 2, 2011, at 11:35 AM, Wm. Josiah Erikson wrote:

> I find it annoying, just for readability of my program and not having to do things over and over again, that I can't do this:
> 
> (defn prediction-test
>  [psize gens]
>  (let [best-fit (evolve_best_fit psize gens)]
>    [reference-error (error best-fit)]
>    [test-error (test_error best-fit)]
>    [error-difference (Math/abs (- reference-error test-error))]
>    (println "The shortest best fit individual over" gens "generations with a population size of" psize)
>    (println "was" best-fit)
>    (println "It had an error of" reference-error "against the reference songs, and an error of")
>    (println test-error "against the test songs, giving a difference of" error-difference)))
> 
> It tells me that it can't resolve the symbol reference-error in this context. I assume that this is because it defines those out of order or something. But why didn't it complain about not knowing what best-fit was first?
> 
> Am I doing this wrong, or can you just not do this?
> 
> -- 
> Wm. Josiah Erikson
> Network Engineer
> Hampshire College
> Amherst, MA 01002
> (413) 559-6091
> 
> _______________________________________________
> Cs254f11 mailing list
> Cs254f11 at lists.hampshire.edu
> https://lists.hampshire.edu/mailman/listinfo/cs254f11

--
Lee Spector, Professor of Computer Science
Cognitive Science, Hampshire College
893 West Street, Amherst, MA 01002-3359
lspector at hampshire.edu, http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438



More information about the Cs254f11 mailing list