Я работаю с этой функцией составления высшего порядка:
fun <T, U, V> higherCompose(): ((U) -> V) -> ((T) -> U) -> (T) -> V =
{ f ->
{ g ->
{ x -> f(g(x)) }
}
}
и приложение:
val cos = higherCompose<Double, Double, Double>()()
{ x: Double -> Math.sin(x)}() { x : Double -> Math.PI/2 - x }
Я понимаю, чего мы пытаемся достичь математически. Но то, с чем я борюсь, это обозначения и значение программирования:
Что именно такое
higherCompose<Double>()
И почему мы применяем к нему столь странные значения:
1. () ()
2. { function1} { function 1}