Functional Programing Android architecture using http://arrow-kt.io/
Functional Programing Android architecture approaches using Arrow.
Since the project uses the News API you will need to add
newsApiKey=your_news_api_keyto your home
gradle.propertiesto be able to compile and run it. You can also add them by command line:
./gradlew detektCheck build -PnewsApiKey="\"whatever\""
This project uses the so called
Tagless-FinalFunctional Programming style. Tagless-Final is focused on never depending on concrete data types like Option or Try, but make the program depend on an unknown
Ftype end to end instead. Then we use Type Class constraints (behaviors) that work over that
Fto encode our programs, leaving the decision about which concrete type to use (or in other words: what type fix
Fto) to the moment when we are ready to run the code, or in other words, the "Runtime".
Once you're at the "edge of the world" to run your program, you'll pass a proper runtime. In this sample we are fixing the
Ftype that the program remains agnostic of to be
IO. But it could actually be any type that supports asynchrony and concurrency, since those are the only constraints we have for this program.
For more Functional Programming content applied to Android you can have a look at my blog 👍
Copyright 2019 Jorge Castillo Pérez
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.