Source Code for the book.
#Learning F# Functional Data Structures and Algorithms ###Get started with F# and explore functional programming paradigm with data structures and algorithms
F# is a multi-paradigm programming language that encompasses object-oriented, imperative, and functional programming language properties. The F# functional programming language enables developers to write simple code to solve complex problems.
Starting with the fundamental concepts of F# and functional programming, this book will walk you through basic problems, helping you to write functional and maintainable code. Using easy-to-understand examples, you will learn how to design data structures and algorithms in F# and apply these concepts in real-life projects. The book will cover built-in data structures and take you through enumerations and sequences. You will gain knowledge about stacks, graph-related algorithms, and implementations of binary trees. Next, you will understand the custom functional implementation of a queue, review sets and maps, and explore the implementation of a vector. Finally, you will find resources and references that will give you a comprehensive overview of F# eco-system, helping you to go beyond the fundamentals.
##Who this book is written for If you have just started your adventure with F#, then this book will help you take the right steps to become a successful F# coder. An intermediate knowledge of imperative programming concepts, and a basic understanding of the algorithms and data structures in .NET environments using the C# language and BCL (Base Class Library), would be helpful.
###What you will learn from this book
- Familiarize yourself with the functional programming nature of F# and explore its fundamentals
- Utilize data structures available in F# and apply recursion and lazy evaluation
- Gain insights into functional programming paradigms; dissect F# code and analyze code available in community projects
- Build abstract data structures and utilize powerful optimization techniques such as memoization
- Explore and test built-in F# bespoke data structures and algorithms
- Become resourceful and learn how to easily reuse libraries contributed by the C# and F# community
- Understand the trade-offs in selecting purely functional (persistent) over mutable data structures
- Implement custom ADT (Abstract Data Type), and discover parallel programming and asynchrony within F#