Map vs. FlatMap

Re:Map vs. FlatMap
« Odpověď #45 kdy: 25. 09. 2016, 20:35:53 »
Rozdíl je v tom, že ty tu na rozdíl od všech ostatních dáváš špatnou odpověď a pak ještě prudíš.


Kit

Re:Map vs. FlatMap
« Odpověď #46 kdy: 25. 09. 2016, 20:50:04 »
Rozdíl je v tom, že ty tu na rozdíl od všech ostatních dáváš špatnou odpověď a pak ještě prudíš.

Ukazuji jiný úhel pohledu, než ostatní. A to rozhodně není špatně.

A já jsem si s fackováním nezačal, takže se laskavě nejdřív podívej do zrcadla.

Re:Map vs. FlatMap
« Odpověď #47 kdy: 25. 09. 2016, 21:01:40 »
Neschovávej špatnou odpověď za jiný úhel pohledu. Tohle není rozbor poezie.

Kit

Re:Map vs. FlatMap
« Odpověď #48 kdy: 25. 09. 2016, 21:08:15 »
Neschovávej špatnou odpověď za jiný úhel pohledu. Tohle není rozbor poezie.

Ani ses nenamáhal mi dokázat, že má odpověď je špatná. Pouhé tvé tvrzení.

Re:Map vs. FlatMap
« Odpověď #49 kdy: 25. 09. 2016, 21:19:29 »
http://lmgtfy.com/?q=flatmap+data+structure
http://lmgtfy.com/?q=flatmap+represented+in+list


Ale ono dost neznačí i to, když dáváš na podporu svého tvrzení link na stránky, které ukazují opak...


Kit

Re:Map vs. FlatMap
« Odpověď #50 kdy: 25. 09. 2016, 21:27:43 »
http://lmgtfy.com/?q=flatmap+data+structure
http://lmgtfy.com/?q=flatmap+represented+in+list

Ale ono dost neznačí i to, když dáváš na podporu svého tvrzení link na stránky, které ukazují opak...

Na uvedených odkazech pracují pouze seznamy seznamů. To je málo.

ava

Re:Map vs. FlatMap
« Odpověď #51 kdy: 25. 09. 2016, 21:32:19 »

Re:Map vs. FlatMap
« Odpověď #52 kdy: 25. 09. 2016, 21:45:50 »
http://lmgtfy.com/?q=flatmap+data+structure
http://lmgtfy.com/?q=flatmap+represented+in+list

Ale ono dost neznačí i to, když dáváš na podporu svého tvrzení link na stránky, které ukazují opak...

Na uvedených odkazech pracují pouze seznamy seznamů. To je málo.

Tak pošli odkaz na nějaký jiný solidní zdroj. Tentokrát zkus takový, který říká, co ty. Ne opak.

Re:Map vs. FlatMap
« Odpověď #53 kdy: 25. 09. 2016, 21:48:39 »

Kit

Re:Map vs. FlatMap
« Odpověď #54 kdy: 25. 09. 2016, 23:10:26 »
Na uvedených odkazech pracují pouze seznamy seznamů. To je málo.

Tak pošli odkaz na nějaký jiný solidní zdroj. Tentokrát zkus takový, který říká, co ty. Ne opak.

Tak ještě jednou:
http://martinfowler.com/articles/collection-pipeline/flat-map.html
Citace
Map a function over a collection and flatten the result by one-level

BoneFlute

  • *****
  • 2 000
    • Zobrazit profil
Re:Map vs. FlatMap
« Odpověď #55 kdy: 26. 09. 2016, 01:19:26 »
Ještě by asi bylo vhodné dodat, že nemusí jít jen o kolekce, ale že jde o hodně obecný koncept fungující i s Optional, Future apod.
Na vstupu nebo na výstupu? Já mám teda flatMap zafixováno tak, že vrací vždy kolekci. V ostatních případech se používají funkce s jiným jménem.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Map vs. FlatMap
« Odpověď #56 kdy: 26. 09. 2016, 01:43:04 »
Ještě by asi bylo vhodné dodat, že nemusí jít jen o kolekce, ale že jde o hodně obecný koncept fungující i s Optional, Future apod.
Na vstupu nebo na výstupu? Já mám teda flatMap zafixováno tak, že vrací vždy kolekci. V ostatních případech se používají funkce s jiným jménem.
FlatMap je join.map a definuje se tak, aby splňovalo monadické zákony. Někdy se mu taky říká bind, ale až na terminologii je to obecný koncept vracející monadickou hodnotu a kolekce jsou jen jedna velmi specifická oblast použití.

Re:Map vs. FlatMap
« Odpověď #57 kdy: 26. 09. 2016, 06:35:08 »
Na uvedených odkazech pracují pouze seznamy seznamů. To je málo.

Tak pošli odkaz na nějaký jiný solidní zdroj. Tentokrát zkus takový, který říká, co ty. Ne opak.

Tak ještě jednou:
http://martinfowler.com/articles/collection-pipeline/flat-map.html
Citace
Map a function over a collection and flatten the result by one-level

Tak ještě jednou: Fowler píše, že je flatmap operace vyššího řádu, ne ta zhůvězilá datová struktura, co jsi popsal:


FlatMap je jednoduchý seznam, ve kterém se střídají klíče a jejich hodnoty.

Re:Map vs. FlatMap
« Odpověď #58 kdy: 26. 09. 2016, 07:25:29 »
Ještě by asi bylo vhodné dodat, že nemusí jít jen o kolekce, ale že jde o hodně obecný koncept fungující i s Optional, Future apod.
Na vstupu nebo na výstupu? Já mám teda flatMap zafixováno tak, že vrací vždy kolekci. V ostatních případech se používají funkce s jiným jménem.

Třebas v Javě je to otázka Streamu a ty nemusíš mít navázané jenom na kolekce, v Haskellu stačí functor, ve Scale GenTraversableOnce, v RX bývají nějaké ty Observables...

ava

Re:Map vs. FlatMap
« Odpověď #59 kdy: 26. 09. 2016, 08:11:09 »
Ještě by asi bylo vhodné dodat, že nemusí jít jen o kolekce, ale že jde o hodně obecný koncept fungující i s Optional, Future apod.
Na vstupu nebo na výstupu? Já mám teda flatMap zafixováno tak, že vrací vždy kolekci. V ostatních případech se používají funkce s jiným jménem.

Třebas v Javě je to otázka Streamu a ty nemusíš mít navázané jenom na kolekce, v Haskellu stačí functor, ve Scale GenTraversableOnce, v RX bývají nějaké ty Observables...

Záleží, v jakém kontextu se o flatMap mluví.

Dá se vnímat úžeji, jako operace na kolekcích spojující map+flatten. Takhle to budou chápat třeba Rubyisti (http://apidock.com/ruby/Enumerable/flat_map).

Nebo se dá vnímat šířeji, jako monadická operace bind (v haskellu >>=). Takhle to budou chápat třeba Scalisti.

Je asi vhodné se před diskuzí domluvit, který význam se bude používat, nebo si alespoň uvědomit, že možné a správné jsou oba, záleží na společnosti.

Jinak V Haskellu je třeba alespoň Monad. Functor má pouze map.

Ve scale jsou traversables jen jedna z věcí co flatMap umí, další jsou třeba to zmiňované Future, Option atp. For comprehension principiálně funguje na každé třídě, která má definována flatMap, (+map, filter/withFilter).

V Rx prakticky nic jiného než Observable není, a ano, umí flatMap :)