Swift 3 functional programming download - Programming Ebook


Download Programming Ebook

Tuesday, June 6, 2017

Swift 3 functional programming download

Swift 3 functional programming
Swift 3 functional programming

Book Details 
  • Title:  Swift 3 functional programming
  • ISBN-10:1942878378
  • Author:Fatih Nayebi
  • Publisher: Pact Publishing
  • Language:English
  • Publish date:2016
  • Subject:Swift / Computers & Technology / Programming / Apple Programming
  • No. of pages: 296
  • Format: PD, epub

Swift 3 Functional Programming

Bring the power of Swift functional programming to iOS, Web, macOS, watchOS and tvOS application development and build clean, smart, scalable and reliable applications 

About the Author

Dr. Fatih Nayebi earned his Ph.D. degree in software engineering from École de technologie supérieure, Université du Québec by researching on Mobile Human-Computer Interaction, Software Engineering, and Machine Learning. Fatih has 15 years of industry experience in software engineering and architecture in various fields. He has developed various applications with Visual Basic, C++, C#, Java, MATLAB, Python, Objective-C, and Swift. He is also an enthusiastic Node, Scala, and Haskell developer.

His specialties include applied predictive and optimization models, human-computer interaction, functional programming, machine learning, and mobile application architecture and development.

Fatih currently works as a Director, Consulting at CGI Group Inc, Montreal, and continues to his academic research and publications as a postdoctoral researcher at École de technologie supérieure.

You can find him talking on Swift and Functional Programming at meetups such as http:/ /www.meetup.com/swift-mtl/, on GitHub at https://github.com/conqueror, and on Twitter as @thefatih.

About the Reviewer

Kostiantyn Koval is a passionate software engineer with six years of experience. All this while, his main passion and work has been building iOS applications. During this time, he has build many applications, including games, enterprise apps, and big platforms. He fell in love with Swift from the beginning and keeps expressing it by sharing it with the world.

Except iOS, he is also interested in other technologies and languages such as Scala, Clojure, LLVM, Ruby, JS, Web, and others.

He is also the author of a Swift High Performance book, Packt Publishing. He loves open source and blogging. You can find him on GitHub at https://github.com/kostiakoval, his blogs can be read at https://medium.com/@kostiakoval or http://kostiakoval.git hub.io, and his Twitter handle is @KostiaKoval


Functional programming (FP) is getting a lot of attention as it eases many of the difficulties faced in object-oriented programming (OOP), such as testability, maintainability, scalability, and concurrency. Swift has a lot of functional programming features that can be easily used, but most Objective-C and Swift programmers are not familiar with these tools.

This book aims to simplify the functional programming paradigms and make it easily usable for Swift programmers, showing you how to use popular functional programming techniques to solve many of your day-to-day development problems. Whether you are new to functional programming and Swift or experienced, this book will provide you with the skills you need to design and develop high quality, easily maintainable, scalable, and efficient applications for iOS, macOS, tvOS, and watchOS. Through this book, you'll learn to build bug-free, maintainable code using functional programming.

What this book covers

Chapter 1, Getting Started with Functional Programming in Swift, introduces functional programming paradigms, such as immutability, stateless programming, pure, first-class, and higher-order functions. This chapter will provide an introduction to the Swift programming language and functional programming paradigms in Swift.

Chapter 2, Functions and Closures, begins with a definition of functions, continues with other related topics, such as function types and tuples, and finally concludes with more advanced topics such as first-class functions, higher-order functions, function composition, closures, currying, recursion, and memoization.

Chapter 3, Types and Type casting, takes a look at types in general and explores reference versus value types in detail. We will cover topics such as value and reference type constants, mixing value and reference types, and copying. Then we will discuss the characteristics of value types. We will also cover the key differences between value and reference types, and how we should decide which one to use. We will continue by exploring equality, identity, type checking, and casting topics.

Chapter 4, Enumerations and Pattern Matching, explains the enumeration definition and usage. We will cover associated and raw values and introduce the concept of algebraic data types. We will explore some examples to cover the sum, product, and recursion types. Also, in this chapter, we will explore patterns such as wildcard, value-binding, identifier, tuple, enumeration case, optional, type casting, and expression, along with related pattern matching examples.

Chapter 5, Generics and Associated Type Protocols, teaches us how to define and use generics. We will also understand the type of problems generics solve. Moving forward, we will explore type constraints, generic data structures, and associated type protocols with examples.

Chapter 6, Map, Filter, and Reduce, introduces the map, filter, and reduce methods in the Swift programming language with appropriate examples. These methods are used on arrays and can replace almost all uses of for-in loops and are more clear and concise.

Chapter 7, Dealing with Optionals, familiarizes us with different techniques to deal with optionals. We will talk about built-in techniques to deal with optionals, such as optional binding, guard, coalescing, and optional chaining. Then we will explore functional programming techniques to deal with optionals.

Chapter 8, Functional Data Structures, introduces you to the concept of functional data structures and explores examples of data structures implemented in functional way, such as Semigroup, Monoid, BST, LinkedList, Stack, and LazyList.

Chapter 9, Importance of Immutability, explores the concept of immutability. We will look at its importance and benefits with the help of examples. Then we will look into cases for mutability and go through an example to compare mutability and immutability effects on our code.

Chapter 10, The Best of Both Worlds – Combining FP Paradigms with OOP, covers object- oriented programming principles and paradigms. Then we will be introduced to protocol- oriented programming. Next, we will have an introduction of functional reactive programming and explore how to mix FP with OOP paradigms.

Chapter 11, Case Study – Developing an iOS Application with the FP and OOP Paradigms, teaches us to develop a Todo backend and an iOS application, employing the concepts we have discussed so far. We will use functional programming techniques to parse and map the data, we will use functional reactive programming to reactively manage events in applications. We will also employ protocol-oriented programming and object-oriented programming techniques as well.

What you need for this book

To follow along with the examples in this book, you'll need to have an Apple computer with macOS 10.10 or higher installed. You'll also need to install Xcode version 8 beta 1 with Swift 3.0 Preview 1.

Who this book is for

The book is for iOS and macOS developers with basic knowledge of Swift programming. Prior knowledge of object-oriented programming is assumed.


In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "The VerboseClass.h file defines an interface as a subclass of the NSObject class."

A block of code is set as follows:
   let numbers = [9, 29, 19, 79]
   // Imperative example
   var tripledNumbers:[Int] = []
   for number in numbers {
     tripledNumbers.append(number * 3)

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "Next, we will create a Single View Application project in Xcode."

Warnings or important notes appear in a box like this.

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of. To send us general feedback, simply e-mail feedback@packtpub.com, and mention the book's title in the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files for this book from your account at http://www. packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpu b.com/support and register to have the files e-mailed directly to you.

You can download the code files by following these steps:

1. Log in or register to our website using your e-mail address and password. 2. Hover the mouse pointer on the SUPPORT tab at the top.

3. Click on
Code Downloads & Errata.

4. Enter the name of the book in the
Search box.

5. Select the book for which you're looking to download the code files.

6. Choose from the drop-down menu where you purchased this book from. 7. Click on
Code Download.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows Zipeg / iZip / UnRarX for Mac 7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPu blishing/Swift-3-Functional-Programming. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishin g/. Check them out!

Downloading the color images of this book

We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from http://www.packtpub.com/sites/default/files/d ownloads/Swift3FunctionalProgramming_ColorImages.pdf.


Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books-maybe a mistake in the text or the code- we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/con tent/support and enter the name of the book in the search field. The required information will appear under the Errata section.


Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at copyright@packtpub.com with a link to the suspected pirated material.
We appreciate your help in protecting our authors and our ability to bring you valuable content.


If you have a problem with any aspect of this book, you can contact us

questions@packtpub.com, and we will do our best to address the problem. 

No comments:

Post a Comment