Funktory v C++

Re:Funktory v C++
« Odpověď #60 kdy: 12. 05. 2017, 07:29:31 »
@zboj

Ajo fakt, ta syntax v původním dotazu je vážně dost jiná, než co jsem zatím potkal. Omluva, a díky za podrobné vysvětlení. Rychlejc píšu než čtu a chápu. Se zájmem jsem si včera přečetl ten link, jak se to dělá v Haskellu, ale nedošlo mi, že tahle úroveň abstrakce je dnes legální v CPP :-) Asi bych si měl doštudovat o kus dál, co to přesně znamená a odkud se to (z matiky) vzalo, v tuto chvíli děkuji za "budíček".


Re:Funktory v C++
« Odpověď #61 kdy: 12. 05. 2017, 08:12:05 »
Jak jsem říkal, píšu rychleji než domýšlím. Vždyť ten jeden řádek zdrojáku v původním dotazu je obyčejná deklarace šablonové třídy. Žádná vyšší magie. Co ta třída dál dělá/obsahuje, není v dotazu uvedeno. Je zmíněna "kniha o metaprogramování", ale bez úplného uvedení zdroje - takže pro mě těžko říct, jestli autor knihy myslel function object (pokud ta šablonová třída obaluje funkci) nebo skutečně functor v obecnějším slova smyslu. Čili... soudím že kolega Zboj je v oboru namočený o dvě ligy víc než já a vidí dál, pokud kategoricky tvrdí, že se jedná o "functor v obecném a původním slova smyslu" :-) Což ti rychlejší tady asi pochopili po druhém až třetím příspěvku v této debatě...

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funktory v C++
« Odpověď #62 kdy: 12. 05. 2017, 09:29:28 »
Jak jsem říkal, píšu rychleji než domýšlím. Vždyť ten jeden řádek zdrojáku v původním dotazu je obyčejná deklarace šablonové třídy. Žádná vyšší magie. Co ta třída dál dělá/obsahuje, není v dotazu uvedeno. Je zmíněna "kniha o metaprogramování", ale bez úplného uvedení zdroje - takže pro mě těžko říct, jestli autor knihy myslel function object (pokud ta šablonová třída obaluje funkci) nebo skutečně functor v obecnějším slova smyslu.
Ono to je z té deklarace vidět celkem jasně. Soudím, že většina zná v C++ jen funktory jako funkční objekty a vůbec neví, co jsou v generickém programování kategorie typů a jak lze formálně nahlížet šablony. Potom odpovídají bez porozumění otázce. Kdyby byl dotaz z Javy s příkladem obsahujícím varianci typů, zmatek by nevznikl (byť průměrný javista taky neví, která bije). To by vlastně byla docela zajímavá anketa mezi javisty, zjistit, zda umí deklarovat jednoduchý kontravariantní funktor v jejich oblíbeném jazyce  :)

Re:Funktory v C++
« Odpověď #63 kdy: 12. 05. 2017, 11:00:01 »
Vždyť ten jeden řádek zdrojáku v původním dotazu je obyčejná deklarace šablonové třídy. Žádná vyšší magie.
Nějaký konkrétní functor sám o sobě žádná vysoká magie není. Trochu náročnější je teprve pochopit, že tahle konkrétní věc je instancí obecného konceptu. Jak už jsem psal jinde, něco jiného je umět sčítat celá čísla a něco jiného je pochopit, že sčítání na celých číslech je grupa a co z toho plyne za důsledky.

Magie může přijít až tehdy, když mám nějakou operaci, která funguje na (obecné, jakékoli) grupě. Což třeba s tím functorem nevím jestli v C++ jde (a jestli jde, tak nechci vědět jak ;) ).

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funktory v C++
« Odpověď #64 kdy: 12. 05. 2017, 11:05:35 »
Vždyť ten jeden řádek zdrojáku v původním dotazu je obyčejná deklarace šablonové třídy. Žádná vyšší magie.
Nějaký konkrétní functor sám o sobě žádná vysoká magie není. Trochu náročnější je teprve pochopit, že tahle konkrétní věc je instancí obecného konceptu. Jak už jsem psal jinde, něco jiného je umět sčítat celá čísla a něco jiného je pochopit, že sčítání na celých číslech je grupa a co z toho plyne za důsledky.

Magie může přijít až tehdy, když mám nějakou operaci, která funguje na (obecné, jakékoli) grupě. Což třeba s tím functorem nevím jestli v C++ jde (a jestli jde, tak nechci vědět jak ;) ).
Neláká tě metaprogramování?  ;D :P


Re:Funktory v C++
« Odpověď #65 kdy: 12. 05. 2017, 11:07:06 »
Neláká tě metaprogramování?  ;D :P
V C++ mě neláká ani programování, natož meta ;)

haha

Re:Funktory v C++
« Odpověď #66 kdy: 12. 05. 2017, 11:45:37 »
Od člověka s větším nadáním než má pan *zboj* a spol., je to všechno pochopitelnější: https://bartoszmilewski.com/

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funktory v C++
« Odpověď #67 kdy: 19. 05. 2017, 17:51:25 »
Od člověka s větším nadáním než má pan *zboj* a spol., je to všechno pochopitelnější: https://bartoszmilewski.com/
Jo, Milewski má fajn blog, ale stejně to tam není moc polopatě, spíš pro hooodně pokročilé v IT a zběhlé v matematice. Kdo pochopí vše, co na svém blogu píše, může se považovat za odborníka v oblasti FP (a potažmo dobrého informatika).

haha

Re:Funktory v C++
« Odpověď #68 kdy: 20. 05. 2017, 11:37:27 »
Od člověka s větším nadáním než má pan *zboj* a spol., je to všechno pochopitelnější: https://bartoszmilewski.com/
Jo, Milewski má fajn blog, ale stejně to tam není moc polopatě, spíš pro hooodně pokročilé v IT a zběhlé v matematice. Kdo pochopí vše, co na svém blogu píše, může se považovat za odborníka v oblasti FP (a potažmo dobrého informatika).
Nic proti, bylo to takové popíchnutí. Někdy se mi zdá, že se tu rozjedete, jak dva staří alchymisti :D. Já nemám sice matematické vzdělání, ale jde to postupně pochopit, takže pro člověka z IT by to neměl být problém. Milewski mi otevřel oči pro C++. Ne že by ho bylo lehčí díky tomu psát, ale už mi nepřipadá jako nepovedené C.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funktory v C++
« Odpověď #69 kdy: 20. 05. 2017, 11:40:15 »
Od člověka s větším nadáním než má pan *zboj* a spol., je to všechno pochopitelnější: https://bartoszmilewski.com/
Jo, Milewski má fajn blog, ale stejně to tam není moc polopatě, spíš pro hooodně pokročilé v IT a zběhlé v matematice. Kdo pochopí vše, co na svém blogu píše, může se považovat za odborníka v oblasti FP (a potažmo dobrého informatika).
Nic proti, bylo to takové popíchnutí. Někdy se mi zdá, že se tu rozjedete, jak dva staří alchymisti :D. Já nemám sice matematické vzdělání, ale jde to postupně pochopit, takže pro člověka z IT by to neměl být problém. Milewski mi otevřel oči pro C++. Ne že by ho bylo lehčí díky tomu psát, ale už mi nepřipadá jako nepovedené C.
No vida, tak to Milewski spáchal dobrý skutek :)