Context matters a lot. I am an avid functional programmer, and I read straight through this book without problem and found it to be at an entirely appropriate level. This makes me worried that this book might be too terse if this is your first book about a functional programming language. I would not call that a criticism so much as a fear, it is something to consider if you are thinking about buying this book. That aside, from my context, this is a pretty good book. This book focuses on a lot of high level ideas and syntax without getting bogged down in overly complicated examples or specific APIs. All of the writing is very clear and the examples generally seem well chosen. The high points are really nice coverage of macros and concurrency constructs. Those are two things that could have easily difficult to understand, but were not do the quality writing found in this book. I do have some criticisms of the book however. Way too much time in this book is spent covering Lancet, which seems to be an entirely dated topic just one year later. The chapter discussing sequences have some really great examples and explanations, but I am afraid I did not develop a very complete cognitive model of how everything is working, especially in terms of the ISeq interface versus specific implementations, next versus rest, etc.... One final criticism I have of the book is that the author does not discuss any of the potential drawbacks or pitfalls of using Clojure on a project. I think every book focused exclusively on one technology should have such a discussion, and I believe this especially holds for a technology as bleeding edge as Clojure. Overall this book is a pleasure to read and I would strongly recommend it.