Cisternino / Granicz / Syme | Expert F# | E-Book | www.sack.de
E-Book

E-Book, Englisch, 609 Seiten

Cisternino / Granicz / Syme Expert F#


1. ed
ISBN: 978-1-4302-0285-1
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark

E-Book, Englisch, 609 Seiten

ISBN: 978-1-4302-0285-1
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark



In this book, the world's foremost experts in F# show you how to program in F# the way they do. Written by F#'s inventor and two major contributors to its development, Expert F# is the authoritative, comprehensive, and in-depth guide to the language and its use. Designed to help others become experts, the first part of the book quickly yet carefully describes the F# language. The second part then carefully shows how to elegantly use F# for a wide variety of practical programming tasks. This comprehensive reference of F# concepts, syntax, and features offers a treasury of expert techniques.

Antonio Cisternino is a professor in the Computer Science Department of the University of Pisa. His primary research is on scientific computing, meta-programming and domain-specific languages on virtual-machine-based execution environments. He has been active in the .NET community since 2001 and developed VSLab, a Microsoft Visual Studio add-in to support MATLAB-like programming in F# and Visual Studio. He is also author of annotated C#, an extension of C#, and Robotics4.NET, a framework for programming robots with Microsoft .NET. Cisternino holds a Ph.D. in Computer Science from the University of Pisa.

Cisternino / Granicz / Syme Expert F# jetzt bestellen!

Weitere Infos & Material


1;Contents at a Glance;5
2;Contents;6
3;Foreword;19
4;About the Authors;21
5;About the Technical Reviewer;22
6;Acknowledgments;23
7;Introduction;24
7.1;The Genesis of F#;24
7.2;About This Book;25
7.3;Who This Book Is For;28
8;Getting Started with F# and . NET;30
8.1;Creating Your First F# Program;30
8.2;Using . NET Libraries from F#;43
8.3;Summary;48
9;Introducing Functional Programming;49
9.1;Getting Started with F# Arithmetic;49
9.2;Introducing Simple Strings;53
9.3;Working with Lists and Options;56
9.4;Working with Conditionals: && and ||;61
9.5;Defining Recursive Functions;62
9.6;Introducing Function Values;64
9.7;Getting Started with Pattern Matching;73
9.8;Getting Started with Sequences;77
9.9;Using Sequence Expressions;81
9.10;Exploring Some Simple Type Definitions;84
9.11;Summary;90
10;Introducing Imperative Programming;91
10.1;Imperative Looping and Iterating;92
10.2;Using Mutable Records;94
10.3;Using Mutable Locals;98
10.4;Working with Arrays;99
10.5;Introducing the Imperative . NET Collections;102
10.6;Exceptions and Controlling Them;106
10.7;Having an Effect: Basic I/ O;110
10.8;Working with null Values;116
10.9;Some Advice: Functional Programming with Side Effects;117
10.10;Summary;122
11;Mastering Types and Generics;123
11.1;Understanding Generic Type Variables;123
11.2;Writing Generic Functions;124
11.3;Understanding Some Important Generic Functions;125
11.4;Making Things Generic;130
11.5;Understanding . NET Types;134
11.6;Understanding Subtyping;135
11.7;Troubleshooting Type Inference Problems;140
11.8;Summary;145
12;Working with Objects and Modules;146
12.1;Getting Started with Objects and Members;146
12.2;Using Constructed Classes;149
12.3;Adding Further Object Notation to Your Types;152
12.4;Defining Object Types with Mutable State;158
12.5;Getting Started with Object Interface Types;160
12.6;More Techniques to Implement Objects;165
12.7;Using Modules and Static Members;169
12.8;Extending Existing Types and Modules;171
12.9;Working with F# Objects and . NET Types;172
12.10;Summary;174
13;Encapsulating and Packaging Your Code;175
13.1;Hiding Things Away;176
13.2;Using Namespaces and Modules;181
13.3;Using Signature Types and Files;184
13.4;Creating Assemblies, DLLs, and EXEs;186
13.5;Packaging Applications;193
13.6;Summary;199
14;Mastering F#: Common Techniques;200
14.1;Equality, Hashing, and Comparison;200
14.2;Efficient Precomputation and Caching;203
14.3;Cleaning Up Resources;209
14.4;Stack As a Resource: Tail Calls and Recursion;217
14.5;Events and Wiring;226
14.6;Summary;229
15;Introducing Language-Oriented Programming;230
15.1;Using XML As a Concrete Language Format;231
15.2;Working with Abstract Syntax Representations;236
15.3;Introducing Active Patterns;243
15.4;Embedded Computational Languages with Workflows;249
15.5;Using F# Reflection;264
15.6;Using F# Quotations;268
15.7;Summary;273
16;Using the F# and . NET Libraries;274
16.1;A High- Level Overview;274
16.2;Using the System Types;278
16.3;Using Regular Expressions and Formatting;280
16.4;Using Further F# and . NET Data Structures;285
16.5;Introducing Microsoft. FSharp. Math;287
16.6;Supervising and Isolating Execution;289
16.7;Further Libraries for Reflective Techniques;289
16.8;Some Other . NET Types You May Encounter;291
16.9;Some Other . NET Libraries;292
16.10;Summary;293
17;Working with Windows Forms and Controls;294
17.1;Writing “ Hello, World!” in a Click;294
17.2;Understanding the Anatomy of a Graphical Application;295
17.3;Composing User Interfaces;296
17.4;Drawing Applications;301
17.5;Writing Your Own Controls;306
17.6;Displaying Samples from Sensors;310
17.7;Creating a Mandelbrot Viewer;322
17.8;Summary;334
18;Working with Symbolic Representations;335
18.1;Symbolic Differentiation and Expression Rendering;336
18.2;Verifying Circuits with Propositional Logic;356
18.3;Summary;371
19;Reactive, Asynchronous, and Concurrent Programming;372
19.1;Introducing Some Terminology;373
19.2;Using and Designing Background Workers;374
19.3;Introducing Asynchronous Computations;382
19.4;Passing and Processing Messages;396
19.5;Using Shared- Memory Concurrency;405
19.6;Summary;409
20;Building Web Applications;410
20.1;Serving Static Web Content;410
20.2;Serving Dynamic Web Content with ASP. NET;413
20.3;Using ASP. NET Input Controls;423
20.4;Displaying Data from Databases;426
20.5;Going Further with ASP. NET;429
20.6;Building Ajax Rich Client Applications;439
20.7;Using Web Services;441
20.8;Summary;446
21;Working with Data;447
21.1;Querying In-Memory Data Structures;447
21.2;Using Databases to Manage Data;452
21.3;Working with Databases in Visual Studio;466
21.4;Accessing Relational Data with F# LinqToSql;468
21.5;Working with XML As a Generic Data Format;471
21.6;Summary;475
22;Lexing and Parsing;476
22.1;Processing Line- Based Input;477
22.2;Tokenizing with FsLex;479
22.3;Recursive- Descent Parsing;488
22.4;Parsing with FsYacc;492
22.5;Binary Parsing and Pickling Using Combinators;501
22.6;Summary;504
23;Interoperating with C and COM;505
23.1;Common Language Runtime;505
23.2;Memory Management at Run Time;508
23.3;COM Interoperability;510
23.4;Platform Invoke;521
23.5;Summary;536
24;Debugging and Testing F# Programs;537
24.1;Debugging F# Programs;538
24.2;Debugging and Testing with F# Interactive;547
24.3;Unit Testing;551
24.4;Summary;557
25;Designing F# Libraries;558
25.1;Designing Vanilla . NET Libraries;559
25.2;Understanding Functional Design Methodology;564
25.3;Applying the . NET Design Guidelines to F#;567
25.4;Some Recommended Coding Idioms;573
25.5;Summary;575
26;F# Brief Language Guide;576
27;Index;583



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.