February 2018
Intermediate to advanced
350 pages
7h 35m
English
State is a structure that provides a functional approach for handling application state. State<S, A> is an abstraction over S -> Tuple2<S, A>. S represents the state type, and Tuple2<S, A> is the result, with S for the newly updated state and A for the function return.
We can start with a simple example, a function that returns two things, a price and the steps to calculate it. To calculate a price, we need to add VAT of 20% and apply a discount if the price value goes above some threshold:
import arrow.core.Tuple2import arrow.core.toTimport arrow.data.Statetypealias PriceLog = MutableList<Tuple2<String, Double>>fun addVat(): State<PriceLog, Unit> = State { log: PriceLog -> val (_, price) = log.last() val vat = price * 0.2 log.add ...
Read now
Unlock full access