hvolkmer (7) [Avatar] Offline

First of all, I'd like to thank the authors for the book. I really enjoyed the content. Most of what I didn't like is related to the writing style which may just be a matter of taste. I took notes while was reading the book and like to share them here. Please treat every note as constructive criticism even if it may sound otherwise. I've read english texts written by Germans and some of them sound rather rigid and commanding even if they aren't ment this way. As I'm German myself I just want to get that out of the way before I post my notes here smilie

I'm fairly new to Clojure. I've read "Programming Clojure" and some only tutorials and watched some of the screencats on blip.tv.

I didn't include page numbers because I'm not sure if they are the same in every PDF. The page breaks seem a little odd in my PDF.

What I missed in the book:

An explaination of Clojure's way of treating nil (in many places) vs. NPEs in Java. e.g ISeq rest returns nil when there's nothing left. This is considered bad in Java and other Lisps return () in this case. Clojure doesn't. I think it's worth explaining why it is that way.

I'd like to see some kind of mark of idimatic vs. not idiomatic code in examples. Maybe a symbol, different background color or the like.

Some chapters or paragraphes are rather hard to read. The reading flow is interupted by citations in parenthesis or footnotes. In my opinion most of the content of footnotes could be integrated in the text or just be left out. With fewer footnotes it would be possible to use footnotes for citation references instead of the parentheses notation. I know that complaining about parenthesis in a book about a lisp-like language may sound hypocritical but I still think the text would be easier to read without the citation references.

Here are my notes:

Chapter 1 - 7

I haven't found any Chapter-Threads for these, so I'll include them here:

8. Macros
Explaination of -> good! But example - while simple - seems to be a bit useless? maybe map example?
(list (int (Math/sqrt 25)))

8.2.1 Defining Control Structures Without Syntax-quote

Example 2: HAS Syntax quote?

8.3 Macros Combining Forms
"Minus symbol resolution and auto-gensym,"... better to cover now?

8.4 Using Macros to Change Forms
Monsters vs. Humans: Perfect for a mindmap smilie
Monsters -> abandoned then XML as example? Seems to be a jump to another topic. Make it clear: We want to output that structute in XML.
Listing 8.5 -> Ah... we're still talking about monsters. Ok... surprise!?

8.5 Using Macros to Control Symbolic Resolution Time
-> "Clojure macros are mostly safe from name capture" What is name capture? -> Is explained afterwards but the sentence reads as if it should be known already.

8.5.1 Anaphora

Good metaphor! smilie

Using -> to create "nested java objects" is cool smilie I'd mention it explicitly.

list* vs. conj?

Listing 8.11 The defcontract Auxilliary Function build-contract

HOF = higher order function? (explained? Should this already be clear)?

NS vs. IN-NS difference is clear. But why IN-IS for REPL?
Hyphens / Underscores in names: Why?

9.2.3 Multimethods to the Rescue
Maybe explain double colon in ::unix here - Why it is used and for what purpose. normally, idiomaticly? used for :type? -> Footnote 84

short before Listing 9.7 "no only" => "not only"

10.2.1 Namespaces as Class Specifications
java.awt.Containre => java.awt.Container?

10.2.2 Exploring User Interface Design and Development with Clojure
(_why Shoes) - I don't understand that.

11. Mutation

Goethe quote. I understand German - but I don't get it.

I really liked that chapter.

11.6.1 Futures as Callbacks

Footnote 105 => Just say "Twitter.com feed" in text. Mo need for footnote IMHO.

11.9 Vars and Dynamic Binding

A) B) -> Formatting? It is formatted as fixed font text in my PDF.

13.2.2 Contracts Programming

"On the other hand unit tests are code and code has bugs." - My opinion: pre/post conditions also can have "bugs" and therefore can be wrong.

Maybe explain/refer to property based testing which basically leads to tested pre/post conditions (ClojureCheck)

13.3.1 Clojure's First-Class Design Patterns

Maybe note that the seq protocol is better than the Iterator in java because it doesn't mutate the underlying data structure

13.4.2 Debugging

Steps? => but no numbered list?

That's it. I hope my comments are useful smilie
jennywatson128 (5) [Avatar] Offline
Re: My notes for the book
I just want to say that I like your notes very much.

Luxury Villas Italy
leesajhon123 (1) [Avatar] Offline
Re: My notes for the book
Hi jenny You are right these notes are really outstanding I would like to say thanks.

Military Challenge Coins
jennywatson128 (5) [Avatar] Offline
Re: My notes for the book
Thank you very much for appreciating.

Villas for Rent in France
jennywatson128 (5) [Avatar] Offline
Re: My notes for the book
Thank you leesa for your lovely feedback.

Luxury Villas Italy