Я изучаю scala в университете и не могу понять, как использовать карту, плоскую карту и Option. Вот пара функций из моей лаборатории. Я знаю, как реализовать первое, но я не знаю, как бороться со вторым? Итак, вопрос: как реализовать вторую функцию, не меняя ее сигнатуру (используя map и flatmap)?
def testCompose[A, B, C, D](f: A => B)
(g: B => C)
(h: C => D): A => D = h compose g compose f
def testMapFlatMap[A, B, C, D](f: A => Option[B])
(g: B => Option[C])
(h: C => D): Option[A] => Option[D] = // help