Generické programování vs. funkcionální

desprit

Generické programování vs. funkcionální
« kdy: 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é?


kabat

Re:Generické programování vs. funkcionální
« Odpověď #1 kdy: 26. 06. 2017, 18:22:52 »
Tym sa nezaoberaj, v zivote to potrebovat nebudes, v praxi detto.

desprit

Re:Generické programování vs. funkcionální
« Odpověď #2 kdy: 26. 06. 2017, 18:34:09 »
Tym sa nezaoberaj, v zivote to potrebovat nebudes, v praxi detto.
Ale u zkoušky jo...

Honza

Re:Generické programování vs. funkcionální
« Odpověď #3 kdy: 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.

Ivan Nový

Re:Generické programování vs. funkcionální
« Odpověď #4 kdy: 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ů.
 


JS

Re:Generické programování vs. funkcionální
« Odpověď #5 kdy: 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.

v

Re:Generické programování vs. funkcionální
« Odpověď #6 kdy: 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

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Generické programování vs. funkcionální
« Odpověď #7 kdy: 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.

v

Re:Generické programování vs. funkcionální
« Odpověď #8 kdy: 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

Re:Generické programování vs. funkcionální
« Odpověď #9 kdy: 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).

v

Re:Generické programování vs. funkcionální
« Odpověď #10 kdy: 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ě

baron

Re:Generické programování vs. funkcionální
« Odpověď #11 kdy: 26. 06. 2017, 22:24:54 »
Kit Vam odpovi :D

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Generické programování vs. funkcionální
« Odpověď #12 kdy: 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.

v

Re:Generické programování vs. funkcionální
« Odpověď #13 kdy: 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?

Pako

Re:Generické programování vs. funkcionální
« Odpověď #14 kdy: 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?