Тип подписи groupBy
есть (на языке Scala, но на самом деле зависит от языка):Есть ли термин для groupBy, который возвращает несколько групп?
def groupBy[K](f: A => K): Map[K, Seq[A]]
Я реализовал groupBy
что возвращает несколько K
, так что каждый A
можно поместить в несколько групп одновременно. Что-то вроде этого:
def multiGroupBy[K](f: A => Seq[K]): Map[K, Seq[A]]
я сделать что-то вроде:
case class Animal(name: String, traits: Seq[String])
List(
Animal("cat", Seq("nocturnal", "feline")),
Animal("dog", Seq("canine")),
Animal("wolf", Seq("nocturnal", "canine"))
).multiGroupBy(animal => animal.traits)
// Map(nocturnal -> List(cat, wolf), feline -> List(cat), canine -> List(dog, wolf))
Название multiGroupBy
работает, но мне интересно, если есть уже термин для работы, как и выше (возможно в Haskell мире?).
ли ваш проект имеет функциональное программирование библиотеки зависимостей, таких как '' Scalaz' или cats'? Если нет, не возражаете ли вы добавить его? Потому что это можно решить с помощью «Monoid» и «foldMap». –
@MustafaSimav Да, мой проект зависит от 'Scalaz'! –
Не следует ли 'multiGroupBy' возвращать' Map [K, Seq [A]] ', а не' Map [K, A] '? –