Составление функций через карту и плоскую карту - PullRequest
0 голосов
/ 28 марта 2020

Я изучаю 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

1 Ответ

2 голосов
/ 28 марта 2020
_.flatMap(f).flatMap(g).map(h)

потому что:

  • _ - получить Option[A]
  • flatMap(f) - заглянуть внутрь, вернуть Option[B] (flatMap() не будет переверните его)
  • flatMap(g) - загляните внутрь, верните Option[C] (flatMap() не перевернет его)
  • map(h) - загляните внутрь, верните D ( map() перемотает его)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...