Functional kotlin extend your OOP skills and implement functional techniques in Kotlin and arrow

Learn how to apply Functional Programming with Kotlin to real-life projects with popular libraries like Arrow. About This Book Focus on the functional aspects of Kotlin and identify the advantages that functional programming brings to the table and the associated coding benefits, Implement common fu...

Descripción completa

Detalles Bibliográficos
Otros Autores: Arias, Mario, author (author), Chakraborty, Rivu, author
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, [England] ; Mumbai, [India] : Packt Publishing 2018.
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009631629906719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright and Credits
  • Dedication
  • Packt Upsell
  • Contributors
  • Table of Contents
  • Preface
  • Chapter 1: Kotlin - Data Types, Objects, and Classes
  • Classes
  • Properties
  • Methods
  • Inheritance
  • Abstract classes
  • Interfaces
  • Objects
  • Object declarations
  • Companion objects
  • Generics
  • Type alias
  • Nullable types
  • Checking for null
  • Checking for non-null types
  • Safe calls
  • The Elvis (?:) operator
  • The (!!) operator
  • Kotlin's type system
  • The Any type
  • Minimum common types
  • The Unit type
  • The Nothing type
  • Other types
  • Data classes
  • Canonical methods
  • The copy() method
  • Destructuring methods
  • Annotations
  • Enum
  • Summary
  • Chapter 2: Getting Started with Functional Programming
  • What is functional programming?
  • Basics concepts
  • First-class and higher-order functions
  • Pure functions
  • Recursive functions
  • Lazy evaluation
  • Functional collections
  • Implementing a functional list
  • Summary
  • Chapter 3: Immutability - It's Important
  • What is immutability?
  • Implementing immutability in Kotlin
  • The difference between var and val
  • Compile time constants
  • Types of immutability
  • Immutable reference  (referential immutability)
  • Immutable values
  • Immutable collections
  • The advantages of immutability
  • Thread safety
  • Low coupling
  • Referential transparency
  • Failure atomicity
  • Caching
  • Compiler optimization
  • Pure functions
  • The disadvantages of immutability
  • Summary
  • Chapter 4: Functions, Function Types, and Side Effects
  • Functions in Kotlin
  • Returning two values from a function
  • Extension functions
  • Default arguments
  • Nested functions
  • Function types in functional programming
  • Lambda
  • Function as property
  • High order functions
  • Pure functions and side effects
  • Side effects
  • Pure functions
  • Summary.
  • Chapter 5: More on Functions
  • Single-expression functions
  • Parameters
  • vararg
  • Lambda
  • Named parameters
  • Named parameters on high-order functions
  • Default parameters
  • Extension functions
  • Extension functions and inheritance
  • Extension functions as members
  • Extension functions with conflicting names
  • Extension functions for objects
  • Infix functions
  • Operator overloading
  • Binary operators
  • Invoke
  • Indexed access
  • Unary operators
  • Type-safe builders
  • Creating a DSL
  • Inline functions
  • Inline restrictions
  • Recursion and corecursion
  • Summary
  • Chapter 6: Delegates in Kotlin
  • Introduction to delegation
  • Understanding delegation
  • Delegates in Kotlin
  • Property delegation (standard delegates)
  • The Delegates.notNull function and lateinit
  • The lazy function
  • Observing property value change with Delegates.Observable
  • The power of veto - Delegates.vetoable
  • Delegated map
  • Custom delegation
  • Local delegates
  • Class delegation
  • Summary
  • Chapter 7: Asynchronous Programming with Coroutines
  • Introduction to coroutines
  • Understanding JVM threads
  • Hello, coroutine world!
  • Using coroutines in real life
  • Synchronous implementation
  • Callbacks
  • Java Futures
  • Promises with Kovenant
  • Coroutines
  • Coroutine context
  • Channels
  • Channel pipelines
  • Managing mutable state
  • Switching contexts
  • Thread safe structures
  • Mutexes
  • Actors
  • Summary
  • Chapter 8: Collections and Data Operations in Kotlin
  • An introduction to collections
  • The advantages of a collections framework
  • List and MutableList
  • Set and MutableSet
  • Map and MutableMap
  • Data operations in a collection
  • The map function
  • The filter function
  • The flatMap function
  • The drop functions
  • The take functions
  • The zip function
  • Grouping collections
  • Summary.
  • Chapter 9: Functional Programming and Reactive Programming
  • Combining FP with OOP
  • Functional reactive programming
  • The Reactive Manifesto
  • Functional reactive frameworks for Kotlin
  • Getting started with RxKotlin
  • Downloading and setting up RxKotlin
  • Comparing the Pull mechanism with the RxJava Push mechanism
  • Observables
  • How Observable works
  • The Observable.create method
  • The Observable.from methods
  • Iterator&lt
  • T&gt
  • .toObservable
  • Subscriber - the Observer interface
  • Subscribing and disposing
  • Summary
  • Chapter 10: Functors, Applicatives, and Monads
  • Functors
  • Monads
  • Applicatives
  • Summary
  • Chapter 11: Working with Streams in Kotlin
  • Introduction to Streams
  • Collections versus Streams
  • Working with Streams
  • Primitive streams
  • Stream factory methods
  • Stream Builder
  • Creating empty Streams - Stream.empty()
  • Creating a Stream by passing elements - Stream.of()
  • Generating Streams - Stream.generate()
  • Collector and Stream.collect - collecting Streams
  • The Collectors.toList(), Collectors.toSet(), and Collectors.toCollection() methods
  • Collecting into Map - Collectors.toMap()
  • Joining Stream of strings - Collectors.joining()
  • Grouping elements of Stream - Collectors.groupingBy()
  • Summary
  • Chapter 12: Getting Started with Arrow
  • Function composition
  • Partial application
  • Binding
  • Reverse
  • Pipes
  • Currying
  • Differences between the currying and partial application
  • Logical complement
  • Memoization
  • Partial functions
  • Identity and constant
  • Optics
  • Configuring Arrows code generation
  • Generating lenses
  • Summary
  • Chapter 13: Arrow Types
  • Option
  • Arrow's type hierarchy
  • Either
  • Monad transformers
  • Try
  • State
  • Corecursion with State
  • Summary
  • Appendix: Kotlin's Quick Start
  • Writing and running Kotlin
  • Kotlin online
  • On your console.
  • Installing SDKMAN
  • Installing Kotlin through SDKMAN
  • Kotlin's REPL
  • Compiling and executing Kotlin files
  • Using Gradle
  • Install Gradle through SDKMAN
  • Creating a distributable Gradle command
  • Creating a Gradle project file
  • Creating our Hello World code
  • Using IntelliJ IDEA or Android Studio
  • Importing Gradle files with IntelliJ IDEA
  • Basic Kotlin syntax
  • General features
  • Packages
  • String concatenation and interpolation
  • Comments
  • Control structures
  • if expression
  • when expression
  • for loop
  • while and do loops
  • Going further
  • Other Books You May Enjoy
  • Index.