Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: desprit 26. 06. 2017, 18:19:08

Název: Generické programování vs. funkcionální
Přispěvatel: desprit 26. 06. 2017, 18:19:08
Může mi někdo vysvětlit následující citát od Knutha, pls? "At an abstract enough level of implementation, generic OOP and functional approaches to programming are one and the same thing. [...] Let's take any language, say, C++. There's a natural transformation from, for instance, Optional<T> to Set<T> and so we can, by and large, work with quotients of types and ignore their actual shape and structure, which provides a great pathway to automatic optimisation and semantic verification [...] We also obtain an almost optimal type system, devising which would be close to impossible otherwise. [...] so what we arrive at in the end is a bijection between a subset of C++ and a purely functional language."

Nechápu, co je "natural transformation" a jak by měla vypadat. Celé mi to vůbec přijde dost divně napsané. Jde to říct i jinak nebo to je fakt tak složité?
Název: Re:Generické programování vs. funkcionální
Přispěvatel: kabat 26. 06. 2017, 18:22:52
Tym sa nezaoberaj, v zivote to potrebovat nebudes, v praxi detto.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: desprit 26. 06. 2017, 18:34:09
Tym sa nezaoberaj, v zivote to potrebovat nebudes, v praxi detto.
Ale u zkoušky jo...
Název: Re:Generické programování vs. funkcionální
Přispěvatel: Honza 26. 06. 2017, 19:41:49
Tym sa nezaoberaj, v zivote to potrebovat nebudes, v praxi detto.
Ale u zkoušky jo...
U zkoušky řekni, že tomu rozumí jen experti tady na rootu.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: Ivan Nový 26. 06. 2017, 19:52:09
Může mi někdo vysvětlit následující citát od Knutha, pls? "At an abstract enough level of implementation, generic OOP and functional approaches to programming are one and the same thing. [...] Let's take any language, say, C++. There's a natural transformation from, for instance, Optional<T> to Set<T> and so we can, by and large, work with quotients of types and ignore their actual shape and structure, which provides a great pathway to automatic optimisation and semantic verification [...] We also obtain an almost optimal type system, devising which would be close to impossible otherwise. [...] so what we arrive at in the end is a bijection between a subset of C++ and a purely functional language."

Nechápu, co je "natural transformation" a jak by měla vypadat. Celé mi to vůbec přijde dost divně napsané. Jde to říct i jinak nebo to je fakt tak složité?

int i = 10
int j = 10
int k = i + j

a přirozená transformace

suma(int(10), int(10))

po transformaci nemůžete rozhodnout, zda jde o volání funkcí, či volání konstruktorů objektů.
 
Název: Re:Generické programování vs. funkcionální
Přispěvatel: JS 26. 06. 2017, 20:10:20
Nevim, neumim to vysvetlit. Doporucuji se zeptat primo vyucujiciho (Knutha?), jestli je to na zkousku. :-)

Ale je fakt, ze mezi OOP a FP existuje cela rada dualit a analogii. Co mi neni jasne, kterou z nich ma konkretne ten citat na mysli.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: v 26. 06. 2017, 20:23:26
Nechápu, co je "natural transformation" a jak by měla vypadat. Celé mi to vůbec přijde dost divně napsané. Jde to říct i jinak nebo to je fakt tak složité?
že se dá z optional udělat set aniž by se něco důležitého ztratilo, naopak už to tak dobře nejde
Název: Re:Generické programování vs. funkcionální
Přispěvatel: zboj 26. 06. 2017, 20:45:54
Nevim, neumim to vysvetlit. Doporucuji se zeptat primo vyucujiciho (Knutha?), jestli je to na zkousku. :-)

Ale je fakt, ze mezi OOP a FP existuje cela rada dualit a analogii. Co mi neni jasne, kterou z nich ma konkretne ten citat na mysli.
Jde o převod z maybe na singleton. Relevantní článek je General theory of natural equivalences, tam to je vše jak na talíři.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: v 26. 06. 2017, 21:34:38
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Název: Re:Generické programování vs. funkcionální
Přispěvatel: Mirek Prýmek 26. 06. 2017, 21:49:17
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Singleton (Just x) nebo prázdné pole (Nothing).
Název: Re:Generické programování vs. funkcionální
Přispěvatel: v 26. 06. 2017, 21:51:25
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Singleton (Just x) nebo prázdné pole (Nothing).
no právě
Název: Re:Generické programování vs. funkcionální
Přispěvatel: baron 26. 06. 2017, 22:24:54
Kit Vam odpovi :D
Název: Re:Generické programování vs. funkcionální
Přispěvatel: zboj 26. 06. 2017, 23:19:56
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Přesně, právě proto.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: v 26. 06. 2017, 23:21:47
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Přesně, právě proto.
viz Prýmek, jak z Nothing udělám množinu o jednom prvku?
Název: Re:Generické programování vs. funkcionální
Přispěvatel: Pako 27. 06. 2017, 00:06:10
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Přesně, právě proto.
viz Prýmek, jak z Nothing udělám množinu o jednom prvku?

No a není Nothingness sama o sobě singletonem? Minimálně na ní lze uplatnit operaci "and" s Being, ne snad?
Název: Re:Generické programování vs. funkcionální
Přispěvatel: zboj 27. 06. 2017, 00:48:21
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Přesně, právě proto.
viz Prýmek, jak z Nothing udělám množinu o jednom prvku?
K tomu slouží prázdná množina.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: zboj 28. 06. 2017, 22:16:56
Jde o převod z maybe na singleton.
to asi ne, ne? ve wikipedii píšou, že singleton je množina o jednom prvku
Přesně, právě proto.
viz Prýmek, jak z Nothing udělám množinu o jednom prvku?

No a není Nothingness sama o sobě singletonem?
Tak to nefunguje, to se prostě mapuje na prázdnou množinu, jinak by to nebyla přirozená transformace, takže by nefungovaly monády a celé by to tedy bylo dost k ničemu.
Název: Re:Generické programování vs. funkcionální
Přispěvatel: Aoidhghean 10. 08. 2017, 09:51:29
Jde to říct i jinak nebo to je fakt tak složité?
  Nejde, je to složité.