Nový objev ve funkcionálním programování

Re:Nový objev ve funkcionálním programování
« Odpověď #75 kdy: 19. 04. 2018, 17:07:25 »
Mohu-li ve vší skromnosti radit, ignorujte jeho ovčáčkovský styl (=směs urážek, pseudoironie a demagogie), třeba ho to pak přestane bavit.
Není sebemenší problém dokázat, že jsem cokoli řekl špatně. Rád to uznám, když dostanu jasný nezvratný argument.

Takže pro jistotu si to shrňme:

Nejtypičtější použití monády (o kterém tady byla řeč), je vytvoření nějakého "předpisu výpočtu" - něčeho, co sestává z nějakých kroků, je jednoznačně dané jejich pořadí, dá se kontrolovat typová korektnost (typ výstupu = typ vstupu), to celé je deklarativní (spouští se to "někde jinde" nebo třeba "se spožděním" - jako ten Promise) a ještě ke všemu to funguje i v jazyce, který negarantuje pořadí vyčíslování funkcí.

No a k tomu zřetězování se používá něco, co se jmenuje "bind" a vypadá to takhle:
(>>=)  :: m a -> (  a -> m b) -> m b
- čili to bere monadické X, funkci z normálních hodnot do monádického Y a vrací to monadické Y

Položme si tedy zásadní otázku, co vlastně dělá ten druhý parametr typu (a -> m b)? Proč tam je? No, dejme třeba bindu Promise<Int> a funkci, která z integeru dělá Promise<string>, co mi z toho ten bind udělá? No světe div se, zřetězí mi ty dva promisy do jednoho, který mi hned vrátí. Takže až mi ze sítě přijde ten integer, zavolá se callback, který ten integer vezme jako index záznamu na disku, odkud načte string. Což ale taky chvíli trvá, takže to taky musí být Promise. A tyhle dvě věci dohromady jsou Promise<string>.

To je celá věda nejtypičtějšího použití monády na příkladu z Javascriptu. Není na tom vůbec nic nepochopitelnýho průměrně inteligentnímu programátorovi.

A to, že ten callback dělá z integeru PROMISE string je tam podstatný, což je celý, o co tady šlo...

Pro zajímavost si tedy shrňme: demagogie je, když řekneme, že callback (a -> m b) "liftuje". To je úplně špatně, může to říct jenom demagog nebo pitomec, co si to musí dostudovat.

Správně je, když řekneme, že return (return ::   a  -> m a) "liftuje". Na tom je vidět, že tomu rozumíme.


v

Re:Nový objev ve funkcionálním programování
« Odpověď #76 kdy: 19. 04. 2018, 17:10:30 »
bind neliftuje, return liftuje
Ani tohle jste nechytil. Neřekl jsem, že bind liftuje, ale že v rámci fce, kterou přijímá jako parametr, se "běžná hodnota" "liftuje" (pro experty: mikturuje frkodrťákem) do monády.
mno, ale ona se obecně neliftuje (viz Idrisův příspěvek)

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #77 kdy: 19. 04. 2018, 17:15:22 »
No světe div se, zřetězí mi ty dva promisy do jednoho
Řetězit se dají funkce, hodnoty ne (ani monadické).

Není na tom vůbec nic nepochopitelnýho průměrně inteligentnímu programátorovi.
Plně souhlasím.

v

Re:Nový objev ve funkcionálním programování
« Odpověď #78 kdy: 19. 04. 2018, 17:16:18 »
já jsem onanista (Prý)
Mohu-li ve vší skromnosti radit, ignorujte jeho ovčáčkovský styl (=směs urážek, pseudoironie a demagogie), třeba ho to pak přestane bavit.
styl ignorovat (snad) zvládnu, šíření bludů a matení pojmů ignorovat nechci, protože bych chtěl, aby se funkcionální programování rozšířilo

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #79 kdy: 19. 04. 2018, 17:19:37 »
bind neliftuje, return liftuje
Ani tohle jste nechytil. Neřekl jsem, že bind liftuje, ale že v rámci fce, kterou přijímá jako parametr, se "běžná hodnota" "liftuje" (pro experty: mikturuje frkodrťákem) do monády.
mno, ale ona se obecně neliftuje (viz Idrisův příspěvek)
Děkuji, už jsem myslel, že jsem to napsal tak, že to nejde pochopit.


Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #80 kdy: 19. 04. 2018, 17:22:02 »
já jsem onanista (Prý)
Mohu-li ve vší skromnosti radit, ignorujte jeho ovčáčkovský styl (=směs urážek, pseudoironie a demagogie), třeba ho to pak přestane bavit.
styl ignorovat (snad) zvládnu, šíření bludů a matení pojmů ignorovat nechci
V tom případě přeji hodně štěstí (v boji (s větrnými mlýny)).

v

Re:Nový objev ve funkcionálním programování
« Odpověď #81 kdy: 19. 04. 2018, 17:23:59 »
bind neliftuje, return liftuje
Ani tohle jste nechytil. Neřekl jsem, že bind liftuje, ale že v rámci fce, kterou přijímá jako parametr, se "běžná hodnota" "liftuje" (pro experty: mikturuje frkodrťákem) do monády.
mno, ale ona se obecně neliftuje (viz Idrisův příspěvek)
Děkuji, už jsem myslel, že jsem to napsal tak, že to nejde pochopit.
problém je, že Prýmek nechápe "lift" jako něco s jasně daným významem

Re:Nový objev ve funkcionálním programování
« Odpověď #82 kdy: 19. 04. 2018, 17:30:32 »
Řetězit se dají funkce, hodnoty ne (ani monadické).
Tak jo, tak jestli si tady ošoupávám klávesnici na tak dlouhej příspěvek jenom proto, aby sis našel další záminku k nesmyslnýmu rýpání do věci, která je naprosto srozumitelná, tak si to tady chlapci užijte. Přeju hodně štěstí v tom propagování funkcionálního programování.

Určitě se vám tady podaří tu úroveň vyliftovat. Pokud ovšem už dávno všichni lidi neodjeli liftem na weight lifting, protože sledovat onanii anonymů taky za chvíli omrzí.

Liftu zdar a onanii zvlášť!

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #83 kdy: 19. 04. 2018, 17:40:02 »
bind neliftuje, return liftuje
Ani tohle jste nechytil. Neřekl jsem, že bind liftuje, ale že v rámci fce, kterou přijímá jako parametr, se "běžná hodnota" "liftuje" (pro experty: mikturuje frkodrťákem) do monády.
mno, ale ona se obecně neliftuje (viz Idrisův příspěvek)
Děkuji, už jsem myslel, že jsem to napsal tak, že to nejde pochopit.
problém je, že Prýmek nechápe "lift" jako něco s jasně daným významem
No jo, to je pak těžký. Ale zase abychom byli fér, ono těch "liftů" je několik, to pak mate.

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #84 kdy: 19. 04. 2018, 17:46:26 »
si tady ošoupávám klávesnici na tak dlouhej příspěvek
Dlouhé příspěvky jistě každý ocení, ale musí mít hlavu a patu. Někdy je lepší v "krátkém příspěvku" přiznat evidentní chybu, ať se diskuse může pohnout k něčemu zajímavému. Taktika "PREZIDENTmluvci" zabírá přece jen na trochu jinou skupinu lidí (ale je fakt, že na Twitter "dlouhé příspěvky" psát nejdou).

Re:Nový objev ve funkcionálním programování
« Odpověď #85 kdy: 19. 04. 2018, 17:49:16 »
Někdy je lepší v "krátkém příspěvku" přiznat evidentní chybu
To by ovšem ta "evidentní chyba" musela být prvně dokázána. Ten dlouhý příspěvek jsem napsal právě proto, abyste mi mohli ukázat, v čem ta údajná chyba má spočívat. Ne, raději si zase vybereme nějakou totální kokotinu a napíšeme zapár příspěvků o tom, jak to Prýmek nechápe... OMG!


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #86 kdy: 19. 04. 2018, 18:02:29 »
Někdy je lepší v "krátkém příspěvku" přiznat evidentní chybu
To by ovšem ta "evidentní chyba" musela být prvně dokázána.
Problém asi je, že nám to připadá tak triviální, že se neobtěžujeme s polopatickým rozepisováním. Ale dobře, například u seznamů, kde je bind jasně definovaný, mu lze dát funkci (λx) [x, x*2] a v tomto výrazu žádný “lift” není, tedy aspoň v žádném běžném významu.

Re:Nový objev ve funkcionálním programování
« Odpověď #87 kdy: 19. 04. 2018, 18:09:11 »
Problém asi je, že nám to připadá tak triviální, že se neobtěžujeme s polopatickým rozepisováním.
Výborně, tak přece jenom se nakonec snad dostaneme k normální diskusi, super! Možná by ještě pomohlo zmírnit ten nadřazený tón (nám to přijde triviální, ale ty to nedáváš) a dostaneme se skutečně na rovinu diskuse dospělých lidí.

Ale dobře, například u seznamů, kde je bind jasně definovaný, mu lze dát funkci (λx) [x, x*2] a v tomto výrazu žádný “lift” není, tedy aspoň v žádném běžném významu.
Dobře. Žádný "lift" tam není, na tom se určitě shodneme.

A v čem je teda ta moje chyba? Psal jsem, že tam nějaký lift je? Můžu poprosit o odkaz na ten příspěvek? Nebo je ta domnělá chyba jinde?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #88 kdy: 19. 04. 2018, 18:16:06 »
raději si zase vybereme nějakou totální kokotinu
Pak je tedy asi lepší je nepsat, aby nebylo z čeho vybírat ;)

Re:Nový objev ve funkcionálním programování
« Odpověď #89 kdy: 19. 04. 2018, 18:23:02 »
Pak je tedy asi lepší je nepsat, aby nebylo z čeho vybírat ;)
Chceme se teda bavit jako dospělí lidi, nebo ne?

Pokud ano, tak tady mám nezodpovězenou otázku:

Dobře. Žádný "lift" tam není, na tom se určitě shodneme.

A v čem je teda ta moje chyba? Psal jsem, že tam nějaký lift je? Můžu poprosit o odkaz na ten příspěvek? Nebo je ta domnělá chyba jinde?