Table of Contents....4
About the Author....7
About the Technical Reviewer....8
Chapter 1: Introduction....9
Who This Book Is For....9
Domain-Specific Languages....10
Chapter 2: Matrix Expressions....17
Parsing Expressions....18
Meta-Programming Parsing....22
Expression Manipulation....26
Optimizing Multiplication....28
Expression Rewriting....31
Expression Evaluation....35
Chapter 3: Components of a Programming Language....38
Text, Tokens, Grammars, and Semantics....39
Specifying a Grammar....43
Designing Semantics....53
Chapter 4: Functions, Classes, and Operators....61
The S3 Object-Oriented Programming System....62
Objects and Classes....62
Generic Functions....64
Operator Overloading....69
Group Generics....74
Precedence and Evaluation Order....76
Code Blocks....79
Chapter 5: Parsing and Manipulating Expressions....82
Quoting and Evaluating....83
Exploring Expressions....89
Manipulating Expressions....99
Chapter 6: Lambda Expressions....106
Anonymous functions....106
Experiments with Alternatives to the Syntax....109
Don’t Do This at Home....112
Chapter 7: Environments and Expressions....113
Scopes and Environments....113
Default Parameters, Lazy Evaluation, and Promises....118
Quotes and Non-standard Evaluation....128
Chapter 8: Tidy Evaluation....139
Quosures....140
Quasi-quoting....151
Chapter 9: List Comprehension....162
Chapter 10: Continuous-Time Markov Chains....170
Constructing the Markov Chain....173
Constructing a Rate Matrix....177
Traces....180
Computing Likelihoods....183
Chapter 11: Pattern Matching....186
Constructors....188
Pattern Matching....199
Lists....206
Search Trees....210
Chapter 12: Dynamic Programming....217
Parsing Expressions....223
Evaluating Expressions....231
Fixing the Evaluation Environment....244
Chapter 13: Conclusion....248
References....250
Index....251
Gain an accelerated introduction to domain-specific languages in R, including coverage of regular expressions. This compact, in-depth book shows you how DSLs are programming languages specialized for a particular purpose, as opposed to general purpose programming languages. Along the way, you’ll learn to specify tasks you want to do in a precise way and achieve programming goals within a domain-specific context.
Domain-Specific Languages in R includes examples of DSLs including large data sets or matrix multiplication; pattern matching DSLs for application in computer vision; and DSLs for continuous time Markov chains and their applications in data science. After reading and using this book, you’ll understand how to write DSLs in R and have skills you can extrapolate to other programming languages.
Those with prior programming experience. R knowledge is helpful but not required.