وبلاگ بلیان

Programming Clojure (Pragmatic Programmers)

معرفی کتاب «Programming Clojure (Pragmatic Programmers)» نوشتهٔ Stuart Halloway; Susannah Davidson Pfalzer، منتشرشده توسط نشر The Pragmatic Bookshelf در سال 2009. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Programming Clojure (Pragmatic Programmers)» در دستهٔ بدون دسته‌بندی قرار دارد.

Clojure is a dynamic language for the Java Virtual Machine, with a compelling combination of features: Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony. Clojure is Lisp reloaded. Clojure has the power inherent in Lisp, but is not constrained by the history of Lisp. Clojure is a functional language. Data structures are immutable, and functions tend to be side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones. Clojure is concurrent. Rather than error-prone locking, Clojure provides software transactional memory. Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer. Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code. Many other languages offer some of these features, but the combination of them all makes Clojure sparkle. "Programming Clojure" shows you why these features are so important, and how you can use Clojure to build powerful programs quickly. Contents 7 Foreword 10 Acknowledgments 12 Preface 14 Who This Book Is For 15 What Is in This Book 15 How to Read This Book 16 Notation Conventions 18 Web Resources and Feedback 19 Downloading Sample Code 20 Getting Started 21 Why Clojure? 21 Clojure Coding Quick Start 30 Exploring Clojure Libraries 37 Introducing Lancet 42 Wrapping Up 44 Exploring Clojure 45 Forms 45 Reader Macros 55 Functions 56 Vars, Bindings, and Namespaces 60 Flow Control 67 Where's My for Loop? 70 Metadata 74 Wrapping Up 77 Working with Java 79 Calling Java 80 Optimizing for Performance 88 Creating and Compiling Java Classes in Clojure 94 Exception Handling 101 Adding Ant Projects and Tasks to Lancet 105 Wrapping Up 110 Unifying Data with Sequences 111 Everything Is a Sequence 112 Using the Sequence Library 117 Lazy and Infinite Sequences 125 Clojure Makes Java Seq-able 127 Calling Structure-Specific Functions 133 Adding Properties to Lancet Tasks 141 Wrapping Up 146 Functional Programming 147 Functional Programming Concepts 148 How to Be Lazy 152 Lazier Than Lazy 160 Recursion Revisited 167 Wrapping Up 176 Concurrency 177 The Problem with Locks 178 Refs and Software Transactional Memory 179 Use Atoms for Uncoordinated, Synchronous Updates 186 Use Agents for Asynchronous Updates 187 Managing Per-Thread State with Vars 192 A Clojure Snake 196 Making Lancet Targets Run Only Once 207 Wrapping Up 210 Macros 211 When to Use Macros 211 Writing a Control Flow Macro 212 Making Macros Simpler 218 Taxonomy of Macros 224 Making a Lancet DSL 233 Wrapping Up 243 Multimethods 244 Living Without Multimethods 245 Defining Multimethods 247 Moving Beyond Simple Dispatch 249 Creating Ad Hoc Taxonomies 251 When Should I Use Multimethods? 255 Adding Type Coercions to Lancet 259 Wrapping Up 264 Clojure in the Wild 265 Automating Tests 266 Data Access 270 Web Development 275 Farewell 283 Editor Support 284 Bibliography 285 Index 286 Symbols 286 A 286 B 286 C 287 D 288 E 288 F 288 G 289 H 289 I 289 J 290 K 290 L 290 M 291 N 291 O 291 P 292 Q 292 R 292 S 293 T 294 U 294 V 294 W 294 X 295 Z 295 Foreword Acknowledgements Preface Getting Started Exploring Clojure Working with Java Unifying Data with Sequences Functional Programming Concurrency Macros Multimethods Clojure in the Wild Editor Support Bibliography Index Provides information on the features and functions of Clojure and describes how to create powerful programs. Describes Clojure, a Lisp-based programming language running on the Java Virtual Machine.
دانلود کتاب Programming Clojure (Pragmatic Programmers)