This is the poorest excuse for a programming book that I have purchased including many from Apress. It is very dated even if only a couple years old, does not reflect the current state of Mono. Commands are plain wrong. The author doesn't complete instructions and the sample scripts are incomplet
Practical Clojure (Expert's Voice in Open Source)
โ Scribed by Luke VanderHart, Stuart Sierra
- Publisher
- Apress
- Year
- 2010
- Tongue
- English
- Leaves
- 228
- Edition
- 1
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Synopsis
This book is the first definitive reference for the Clojure language, providing both an introduction to functional programming in general and a more specific introduction to Clojureโs features. This book demonstrates the use of the language through examples, including features such asย software transactional memory (STM)ย and immutability, which may be new to programmers coming from other languages. Overview of functional programming and description of what sets Clojure apart from other languages Detailed explanation of Clojureโs special features Examples of real-world tasks that are well-suited to Clojureโs capabilities, starting with simple tasks and moving on to more complex applications What youโll learn What Clojure isโmore than just another Lisp How to set up a Clojure environment The structure and syntax of a Clojure program Java interoperability How to use Clojure for real-world tasks Common idioms of Clojure code Who this book is for There are two audiences for this book: any technical person desiring to know what Clojure is and why they might want to use it, and any programmer desiring to learn and use the language. The goals of these two audiences mesh nicely, given that Clojure has several new, cutting-edge features that programmers are unlikely to have encountered before. Table of Contents The Clojure Way The Clojure Environment Controlling Program Flow Data in Clojure Sequences State Management Namespaces and Libraries Metadata Multimethods and Hierarchies Java Interoperability Parallel Programming Macros and Metaprogramming Datatypes and Protocols Performance
โฆ Table of Contents
Prelim......Page 1
Contents at a Glance......Page 6
Contents......Page 7
About the Authors......Page 16
About the Technical Reviewer......Page 17
Acknowledgments......Page 18
Dynamic and Powerful (Yes, Itโs a Lisp)......Page 19
Functional Programming......Page 20
Purely Functional Programming......Page 22
Clojureโs Compromise......Page 24
Immutability......Page 25
What about Object-Oriented Programming?......Page 27
Structure of a Clojure Program......Page 28
State Management......Page 29
State and Identity......Page 30
Software Transactional Memory......Page 31
Summary......Page 33
"Hello World" in Clojure......Page 35
Literals......Page 36
Special Forms......Page 37
Writing and Running Source Files......Page 38
Vars, Namespaces, and the Environment......Page 39
Symbol Names......Page 41
Namespaces......Page 42
Referencing Namespaces......Page 43
Summary......Page 44
fn......Page 47
Functions of Multiple Arities......Page 49
Functions with Variable Arguments......Page 50
Shorthand Function Declaration......Page 51
Conditional Expressions......Page 52
Local Bindings......Page 53
Looping and Recursion......Page 54
Clojureโs......Page 57
Using loop......Page 59
U......Page 60
First-Class Functions......Page 61
Consuming First-Class Functions......Page 62
Producing First-Class Functions......Page 63
Using partial to Curry Functions......Page 64
Using comp to Compose Functions......Page 65
Putting It All Together......Page 66
How to Represent and Manipulate Data......Page 69
Numbers......Page 70
Common Numeric Functions......Page 71
Common String Functions......Page 75
Regular Expression Functions......Page 76
Characters......Page 78
Collections......Page 79
Lists......Page 80
list?......Page 81
get......Page 82
pop......Page 83
Maps......Page 84
Struct Maps......Page 85
Maps As Objects......Page 86
Sets......Page 88
Summary......Page 89
What Are Sequences?......Page 91
Anatomy of a Sequence......Page 93
Constructing Sequences......Page 94
Lazy Sequences......Page 95
An Example of Laziness......Page 96
Constructing Lazy Sequences Directly......Page 98
Constructing Lazy Sequences Using Sequence Generator Functions......Page 99
Lazy Sequences and Memory Management......Page 100
rseq......Page 101
repeat......Page 102
remove......Page 103
mapcat......Page 104
next......Page 105
take-nth......Page 106
sort-by......Page 107
partition......Page 108
map......Page 109
Summary......Page 112
The Old Way......Page 113
State and Identity in Clojure......Page 114
Refs and Transactions......Page 115
Updating refs......Page 116
Tools for Updating refs......Page 117
Examples......Page 119
Using Atoms......Page 122
Creating and Updating Agents......Page 123
Update Semantics......Page 124
Dealing with Agents in a Failed State......Page 125
Shutting Down Agents......Page 126
Vars and Thread-Local State......Page 127
When to Use Thread-Local Vars......Page 128
Validators......Page 129
Watches......Page 130
Summary......Page 131
Switching Namespaces with in-ns......Page 133
Referring to Other Namespaces......Page 134
Loading from a File or Stream......Page 135
Loading Namespaces from the Classpath......Page 136
Importing Java Classes......Page 138
Symbols and Namespaces......Page 139
Namespace-Qualified Symbols and Keywords......Page 140
Public and Private Vars......Page 141
Querying Namespaces......Page 142
Manipulating Namespaces......Page 143
Summary......Page 144
Reading and Writing Metadata......Page 145
Metadata-Preserving Operations......Page 146
Metadata on Vars......Page 147
Summary......Page 149
Multimethods......Page 151
Default Dispatch Values......Page 153
Hierarchies......Page 154
Hierarchies with Multimethods......Page 155
Hierarchies with Java Classes......Page 156
Resolving Conflicts......Page 157
User-Defined Hierarchies......Page 159
Summary......Page 160
Java Interop Special Forms......Page 161
Java Interop Preferred Forms......Page 162
Clojure Types and Java Interfaces......Page 163
Java Arrays......Page 164
Creating Arrays......Page 165
Calling Clojure from Java......Page 166
Using Clojure Functions and Vars......Page 167
Proxying Java Classes......Page 168
Generating Java Classes......Page 169
Ahead-of-Time Compilation......Page 170
Adding State to the Generated Class......Page 172
Adding Constructors and Factories......Page 173
Namespace Declarations with gen-class......Page 174
Summary......Page 175
Agent Thread Pools......Page 177
Agent Example......Page 178
Concurrency Functions......Page 179
Overhead and Performance......Page 180
Futures......Page 181
Promises......Page 182
Creating a Thread......Page 183
Summary......Page 184
Homoiconicity......Page 185
Macros......Page 186
Working with Macros......Page 187
Debugging Macros......Page 188
Splicing Unquotes......Page 189
Generating Symbols......Page 190
Implementing a Control Structure......Page 191
Implementing a Macro with Variadic Arguments......Page 192
Using Macros to Create DSLs......Page 194
Summary......Page 196
Protocols......Page 197
Datatypes......Page 198
In-Line Methods......Page 199
Extending Java Interfaces......Page 200
Extending Protocols to Pre-Existing Types......Page 201
Reifying Anonymous Datatypes......Page 202
Working with Datatypes and Protocols......Page 203
Advanced Datatypes......Page 204
Summary......Page 205
General Tips for Java Performance......Page 207
Using Java Profiling Tools......Page 208
Reflection and Type Hints......Page 209
Loop Primitives......Page 211
Unchecked Integer Arithmetic......Page 212
Transients......Page 213
Var Lookups......Page 214
Summary......Page 215
A......Page 217
C......Page 218
D......Page 219
E......Page 220
I G......Page 221
J K......Page 222
M......Page 223
N......Page 224
R......Page 225
S......Page 226
T......Page 227
Z......Page 228
๐ SIMILAR VOLUMES
Ruby has set the world on fire, proving itself a serious challenger to Perl and Python in all spheres. In particular, more and more people are discovering that Rubys flexibility, superb feature set, and gentle learning curve make it a natural choice for system administration tasks, from the humblest
An open source version control project, Subversion is enjoying considerable interest due to its stated intention of resolving longstanding problems found within the aging Concurrent Versioning System (CVS), long the standard solution for millions of projects around the globe. Accordingly, high-profi
<p><span>Within the pages of Practical Ruby for System Administration, you'll learn the Ruby way to construct files, tap into clouds of data, build domain-specific languages, perform network traffic analysis, and more. Coverage places equal emphasis on fundamental Ruby concepts as well as practical
If nothing else i would have bought this book just for the first chapter over debugging. I bought this with some background in taking a class or two in C++ and Java. So programing structures and basic understanding of programming is probobly good to get the most out of this book. I woulnt buy
There are tens of thousands of Linux and Unix system administrators who are pressed for time and need an immediate fix. Expert Shell Scripting offers quick and easy solutions to many common (but challenging) problems that would otherwise take hours to solve. This is a book for people who know shell