Learning Functional Data Structures and Algorithms
eBook - ePub

Learning Functional Data Structures and Algorithms

Atul S. Khot, Raju Kumar Mishra

Buch teilen
  1. 318 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Learning Functional Data Structures and Algorithms

Atul S. Khot, Raju Kumar Mishra

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Learn functional data structures and algorithms for your applications and bring their benefits to your work now

About This Book

  • Moving from object-oriented programming to functional programming? This book will help you get started with functional programming.
  • Easy-to-understand explanations of practical topics will help you get started with functional data structures.
  • Illustrative diagrams to explain the algorithms in detail.
  • Get hands-on practice of Scala to get the most out of functional programming.

Who This Book Is For

This book is for those who have some experience in functional programming languages. The data structures in this book are primarily written in Scala, however implementing the algorithms in other functional languages should be straight forward.

What You Will Learn

  • Learn to think in the functional paradigm
  • Understand common data structures and the associated algorithms, as well as the context in which they are commonly used
  • Take a look at the runtime and space complexities with the O notation
  • See how ADTs are implemented in a functional setting
  • Explore the basic theme of immutability and persistent data structures
  • Find out how the internal algorithms are redesigned to exploit structural sharing, so that the persistent data structures perform well, avoiding needless copying.
  • Get to know functional features like lazy evaluation and recursion used to implement efficient algorithms
  • Gain Scala best practices and idioms

In Detail

Functional data structures have the power to improve the codebase of an application and improve efficiency. With the advent of functional programming and with powerful functional languages such as Scala, Clojure and Elixir becoming part of important enterprise applications, functional data structures have gained an important place in the developer toolkit. Immutability is a cornerstone of functional programming. Immutable and persistent data structures are thread safe by definition and hence very appealing for writing robust concurrent programs.

How do we express traditional algorithms in functional setting? Won't we end up copying too much? Do we trade performance for versioned data structures?

This book attempts to answer these questions by looking at functional implementations of traditional algorithms.

It begins with a refresher and consolidation of what functional programming is all about. Next, you'll get to know about Lists, the work horse data type for most functional languages. We show what structural sharing means and how it helps to make immutable data structures efficient and practical.

Scala is the primary implementation languages for most of the examples. At times, we also present Clojure snippets to illustrate the underlying fundamental theme. While writing code, we use ADTs (abstract data types). Stacks, Queues, Trees and Graphs are all familiar ADTs. You will see how these ADTs are implemented in a functional setting. We look at implementation techniques like amortization and lazy evaluation to ensure efficiency.

By the end of the book, you will be able to write efficient functional data structures and algorithms for your applications.

Style and approach

Step-by-step topics will help you get started with functional programming. Learn by doing with hands-on code snippets that give you practical experience of the subject.

Häufig gestellte Fragen

Wie kann ich mein Abo kündigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich Bücher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Unterstützt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Learning Functional Data Structures and Algorithms als Online-PDF/ePub verfügbar?
Ja, du hast Zugang zu Learning Functional Data Structures and Algorithms von Atul S. Khot, Raju Kumar Mishra im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Ciencia de la computación & Algoritmos de programación. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Learning Functional Data Structures and Algorithms


Learning Functional Data Structures and Algorithms

Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2017
Production reference: 1170217
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78588-873-1
www.packtpub.com

Credits

Authors
Atul S. Khot
Raju Kumar Mishra
Copy Editor
Gladson Monteiro
Reviewer
Muhammad Ali Ejaz
Project Coordinator
Sheejal Shah
Commissioning Editor
Kunal Parikh
Proofreader
Safis Editing
Acquisition Editor
Denim Pinto
Indexer
Mariammal Chettiyar
Content Development Editor
Nikhil Borkar
Graphics
Abhinash Sahu
Technical Editor
Hussain Kanchwala
Production Coordinator
Shantanu Zagade

About the Authors

Atul S. Khot grew up in Marathwada, a region of the state of Maharashtra, India. A self-taught programmer, he started writing software in C and C++. A Linux aficionado and a command-line guy at heart, Atul has always been a polyglot programmer. Having extensively programmed in Java and dabbled in multiple languages, these days, he is increasingly getting hooked on Scala, Clojure, and Erlang. Atul is a frequent speaker at software conferences, and a past Dr. Dobb's product award judge. In his spare time, he loves to read classic British detective fiction. He is a foodie at heart and a pretty good cook. Atul someday dreams of working as a master chef, serving people with lip-smacking dishes.
He was the author of Scala Functional Programming Patterns published by Packt Publishing in December 2015. The book looks at traditional object-oriented design patterns and shows how we could use Scala's functional features instead.
I would like to thank my mother, late Sushila S. Khot, for teaching me the value of sharing. Aai, I remember all you did for the needy girl students! Your support for the blind school - you brought hope to so many lives! You are no more, however your kindness and selfless spirit lives on! I know you are watching dear mother, and I will carry on the flame till I live! I also would like to thank my father, late Shriniwas V. Khot. Anna, I have a photo of the 'Tamra pat'--an engraved copper plaque--commemorating your great contribution to the country's freedom struggle. You never compromised on core values --always stood for the needy and poor. You live on in my memories--a hero forever! I would also want to thank Martin Odersky for giving us the Scala programming language. I am deeply thankful to Rich Hickey and the Clojure community for their work on persistent data structures. Chris Okasaki’s "Purely Functional Data Structures" is a perennial source of inspiration and insight. I wish to thank Chris for writing the book. This book is influenced by many ideas Chris presented in his book. I also wish to thank the functional programming community for all the technical writings which is a source of continual learning and inspiration. I would love to express my heartfelt thanks to Nikhil Borkar for all the support through out the book writing. I also would take this opportunity to thank Hussain Kanchwala for the detailed editing efforts to make the book perfect. You guys are awesome! Thanks to y’all!
Raju Kumar Mishra is a consultant and corporate trainer for big data and programming. After completing his B.Tech from Indian Institute of Technology (ISM) Dhanbad, he worked for Tata Steel. His deep passion for mathematics, data science, and programming took him to Indian Institute of Science (IISc). After graduating from IISc in computational science, he worked for Oracle as a performance engineer and software developer. He is an Oracle-certified associate for Java 7. He is a Hortonworks-certified Apache Hadoop Java developer, and holds a Developer Certification for Apache Spark (O'Reilly School of Technology and Databriks), and Revolution R Enterprise-certified Specialist Certifications. Apart from this, he has also cleared Financial Risk Manager (FRM I) exam. His interest in mathematics helped him in clearing the CT3 (Actuarial Science) exam.
My heartiest thanks to the Almighty. I would like to thank my mom, Smt. Savitri Mishra, my sisters, Mitan and Priya, and my maternal uncle, Shyam Bihari Pandey, for their support and encouragement. I am grateful to Anurag Pal Sehgal, Saurabh Gupta, and all my friends. Last but not least, thanks to Nikhil Borkar, Content Development Editor at Packt Publishing for his support in writing this book.

About the Reviewer

Muhammad Ali Ejaz is currently pursuing his graduate degree at Stony Brook University. His experience, leading up to this academic achievement, ranges from working as a developer to cofounding a start-up, from serving in outreach organizations to giving talks at various prestigious conferences. While working as a developer at ThoughtWorks, Ali cofounded a career empowerment based start-up by providing photographers a platform to showcase their art and be discovered by potential employers. His passion for computer science is reflected in his contributions to open source projects, such as GoCD, and his role in serving as t...

Inhaltsverzeichnis