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 »
Citace od: Ondra Satai Nekola 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íš.

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 »
Citace od: Ondra Satai Nekola kdy 25. 09. 2016, 21:01:40
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 »
Citace od: Ondra Satai Nekola 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...

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 »
Citace od: Kit kdy 25. 09. 2016, 21:27:43
Citace od: Ondra Satai Nekola 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...

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 »
Citace od: Ondra Satai Nekola kdy 25. 09. 2016, 21:45:50
Citace od: Kit kdy 25. 09. 2016, 21:27:43
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
CitaceMap a function over a collection and flatten the result by one-level

BoneFlute

  • *****
  • 2 155
Re:Map vs. FlatMap
« Odpověď #55 kdy: 26. 09. 2016, 01:19:26 »
Citace od: zboj kdy 25. 09. 2016, 16:02: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
Re:Map vs. FlatMap
« Odpověď #56 kdy: 26. 09. 2016, 01:43:04 »
Citace od: BoneFlute kdy 26. 09. 2016, 01:19:26
Citace od: zboj kdy 25. 09. 2016, 16:02: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.
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 »
Citace od: Kit kdy 25. 09. 2016, 23:10:26
Citace od: Ondra Satai Nekola kdy 25. 09. 2016, 21:45:50
Citace od: Kit kdy 25. 09. 2016, 21:27:43
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
CitaceMap 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:

Citace od: Kit kdy 22. 09. 2016, 15:53:05

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 »
Citace od: BoneFlute kdy 26. 09. 2016, 01:19:26
Citace od: zboj kdy 25. 09. 2016, 16:02: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.

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 »
Citace od: Ondra Satai Nekola kdy 26. 09. 2016, 07:25:29
Citace od: BoneFlute kdy 26. 09. 2016, 01:19:26
Citace od: zboj kdy 25. 09. 2016, 16:02: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.

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 :)