by Grzegorz Dyrda (@grzegorzdyrda)
Poniższa konstrukcja jest zupełnie poprawna:
val prefixer = fun(prefix: String) = fun(str: String) = prefix + str
prefixer
jest funkcją która przyjmuje Stringa, a zwraca inną funkcję, która z kolei przyjmuje String i zwraca String.
Myśl tak: prefixer to "generyczna" funkcja dodająca "coś" to str. To "coś" zostanie dookreślone w konkretnej implementacji.
Implementację prefixera tworzymy tak:
val prefixWithXYZ = prefixer("XYZ")
I potem używamy tak:
val result = prefixWithXYZ("kotlin")