Я предполагаю, что должен быть более функциональный способ выразить следующее:
def foo(i: Any) : Int
if (foo(a) < foo(b)) a else b
Итак, в этом примере f == foo
и p == _ < _
. Для этого нужно быть искусным умением в скаласе! Я вижу, что используя BooleanW
, я могу написать:
p(f(a), f(b)).option(a).getOrElse(b)
Но я был уверен, что смогу написать код, который будет ссылаться только на a и b. Если это существует, оно должно быть в некоторой комбинации Function1W
и что-то еще, но скалаз для меня немного загаден!
РЕДАКТИРОВАТЬ. Я думаю, что я спрашиваю здесь: "Как мне это написать?" но "Какое правильное имя и подпись для такой функции и имеет ли она какое-либо отношение к материалам FP, которые я еще не понимаю как Kleisli, Comonad и т.д.?"