An example of a pragmatic proof of concept DSL over UiDevice for Android built atop Kategory Free monads, using Higher kinds, monadic comprehensions and a cartesian builder to allow easy composition of DSL ops. This hopefully shows that we can workaround some of the lang limitations to do typed FP in Kotlin:
https://github.com/Guardiola31337/uiagesturegen/pull/1