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

Re:Nový objev ve funkcionálním programování
« Odpověď #270 kdy: 22. 04. 2018, 10:11:38 »
to jenom abyste měl možnost pochopit můj pohled
Já ho chápu. Ale úplně se míjí se smyslem toho příkladu.


v

Re:Nový objev ve funkcionálním programování
« Odpověď #271 kdy: 22. 04. 2018, 10:28:28 »
ad nejde nadefinovat
  možná i jde, v haskellu jdou i některé hrozné věci (viz printf), zkoumat to nebudu
ad pomáháte const
  psal jsem, že Arrow jsem zkoušel dnes ráno, možná to jde jinak, arr const jde napsal takhle (potom platí že typ nalevo etc):
  liftConstToMy1stArrow :: a -> My1stArrowTy () a
  liftConstToMy1stArrow a = arr (const a)
ad liftFunc liftValue
  ne, je to ve smyslu "proveď s argumentem operaci lift tak jak to jeho typ a typ struktury do které se liftuje vyžaduje" tj. nemyslím tím konkrétní funkci, souhlasím, že to je matoucí
ad diagram
  to by mohlo vyvolat dojem, že pro programování v haskellu potřebujete studovat nějakou složitou matiku, což IMHO není pravda (byť to asi může prospět)

Re:Nový objev ve funkcionálním programování
« Odpověď #272 kdy: 22. 04. 2018, 10:36:05 »
K tomu předtím se nevyjadřuju, abych vám nechal to poslední slovo. (Vysvětluju proto, aby mi zas někdo nevykládal, že vytrhávám z kontextu a ignoruju podstatné :) )

  to by mohlo vyvolat dojem, že pro programování v haskellu potřebujete studovat nějakou složitou matiku, což IMHO není pravda (byť to asi může prospět)
Ale ta otázka nebyla (z mé strany) o programování v Haskellu. Vy sám jste si vybral Haskell jako vysvětlovací nástroj, což nebyla šikovná strategie pro tak obecnou otázku :)

------------------

Díky, že jste začal komunikovat, fakt si toho vážím. Navrhoval bych, abysme udělali jednu věc pro dobro lidstva: vzájemně si slíbili, že v jakýchkoli diskusích se vynasnažíme k sobě nepřistupovat s apriorním přednastavením, že ten druhý je nedouk nebo onanista, a budeme si snažit vzájemně vyjít vstříc a udělat všechno proto, abysme pochopili, co se ten druhý snaží říct.

Může být?

Byl by to imho hezký závěr :)

v

Re:Nový objev ve funkcionálním programování
« Odpověď #273 kdy: 22. 04. 2018, 11:14:15 »
K tomu předtím se nevyjadřuju, abych vám nechal to poslední slovo. (Vysvětluju proto, aby mi zas někdo nevykládal, že vytrhávám z kontextu a ignoruju podstatné :) )

  to by mohlo vyvolat dojem, že pro programování v haskellu potřebujete studovat nějakou složitou matiku, což IMHO není pravda (byť to asi může prospět)
Ale ta otázka nebyla (z mé strany) o programování v Haskellu. Vy sám jste si vybral Haskell jako vysvětlovací nástroj, což nebyla šikovná strategie pro tak obecnou otázku :)

------------------

Díky, že jste začal komunikovat, fakt si toho vážím. Navrhoval bych, abysme udělali jednu věc pro dobro lidstva: vzájemně si slíbili, že v jakýchkoli diskusích se vynasnažíme k sobě nepřistupovat s apriorním přednastavením, že ten druhý je nedouk nebo onanista, a budeme si snažit vzájemně vyjít vstříc a udělat všechno proto, abysme pochopili, co se ten druhý snaží říct.

Může být?

Byl by to imho hezký závěr :)
prakticky vždycky mám zájem o věcnou diskuzi, nejsem si vědom toho, že bych ignoroval nějaký dotaz k věci (kdyžtak mě někdo opravte), o poslední slovo zájem naopak nemám (k čemu to má být dobré?)
haskell pro tak obecnou otázku je IMHO excelentní volba (taková spustitelná matematika), vždyť vy jste ho taky použil v tom prapůvodním příspěvku (BTW E. Kmett, B. Milewski)

na ten zbytek reagovat nebudu

Re:Nový objev ve funkcionálním programování
« Odpověď #274 kdy: 22. 04. 2018, 11:15:13 »
na ten zbytek reagovat nebudu
Škoda.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #275 kdy: 22. 04. 2018, 13:40:46 »
On ten Komenský věděl, proč radí jít od konkrétního k abstraktnímu. Ono to totiž funguje.
To nepochybně, když někomu řeknu, že monáda je objekt v nějaké kategorii s nějakými dvěma morfismy z/do něj, tak stejně nebude schopen naimplementovat ani použít opšnl nebo kontinuaci. Škoda, že Komenského monad tutorial shořel v Lešně.

Re:Nový objev ve funkcionálním programování
« Odpověď #276 kdy: 22. 04. 2018, 15:31:19 »
To nepochybně, když někomu řeknu, že monáda je objekt v nějaké kategorii s nějakými dvěma morfismy z/do něj, tak stejně nebude schopen naimplementovat ani použít opšnl nebo kontinuaci. Škoda, že Komenského monad tutorial shořel v Lešně.

+ 1  :D :D :D :D :D  :D :D

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #277 kdy: 22. 04. 2018, 20:48:31 »
Prostě, čekal jsem spíš, že přijdete s tím diagramem a objekty si nadefinujete nějak hooodně obecně. V Haskellu to v takovéhle obecnosti nejspíš definovat nejde, ani když si pomůžete nějakým neformální "metahaskellem" typu "ta funkce vypadá nějak takhle".
To je asi nějaké nedorozumění, v diagramu by se lifty taky definovaly zvlášť. To “nějak takhle” je schéma definice (“schéma” se používá zejména v teorii množin vždy, když něco nejde nadefinovat jedním výrazem).

Re:Nový objev ve funkcionálním programování
« Odpověď #278 kdy: 22. 04. 2018, 21:12:00 »
To je asi nějaké nedorozumění, v diagramu by se lifty taky definovaly zvlášť. To “nějak takhle” je schéma definice (“schéma” se používá zejména v teorii množin vždy, když něco nejde nadefinovat jedním výrazem).
já bych to už nerozpitvával, všichni víme, co lift dělá, a není o čem nad ním diskutovat.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Nový objev ve funkcionálním programování
« Odpověď #279 kdy: 22. 04. 2018, 22:08:23 »
... že monáda je objekt v nějaké kategorii s nějakými dvěma morfismy z/do něj, ...
A pak, že to nejste schopni jednoduše vysvětlit :P

abcd

Re:Nový objev ve funkcionálním programování
« Odpověď #280 kdy: 23. 04. 2018, 07:51:16 »
Aniž bych chtěl nějak snižovat význam monád, tak programovací technika

- kterou nikdo neumí vysvětlit
- k jejímu pochopení je potřeba diplom z matfyzu
- když někdo myslí, že jí pochopil, tak mu ostatní začnou říkat, že jí nechápe

je poněkud nepraktická. Tím neříkám, že je nepoužitelná, když ale v praxi ke svému kódu posadíte nového člověka, tak by měl být schopný daný kód pochopit. Takhle to působí, že když kód napíšete pomocí monád, tak můžete spolupracovníky vybírat ze všech dvaceti lidí, kteří je v republice chápou - pokud se zrovna nehádají s Prýmkem, jestli je vlastně chápou.

Re:Nový objev ve funkcionálním programování
« Odpověď #281 kdy: 23. 04. 2018, 08:03:48 »
Aniž bych chtěl nějak snižovat význam monád, tak programovací technika

- kterou nikdo neumí vysvětlit
- k jejímu pochopení je potřeba diplom z matfyzu
- když někdo myslí, že jí pochopil, tak mu ostatní začnou říkat, že jí nechápe

je poněkud nepraktická. Tím neříkám, že je nepoužitelná, když ale v praxi ke svému kódu posadíte nového člověka, tak by měl být schopný daný kód pochopit. Takhle to působí, že když kód napíšete pomocí monád, tak můžete spolupracovníky vybírat ze všech dvaceti lidí, kteří je v republice chápou - pokud se zrovna nehádají s Prýmkem, jestli je vlastně chápou.
Nepochopitelné ani nevysvětlitelné to není a není na to potřeba diplom z matfyzu. Stačí si přečíst dobré vysvětlení, např. http://learnyouahaskell.com/chapters - kapitoly 9 a 12. Z toho to musí každý pochopit dostatečně na to, aby to uměl dobře použít.

Ono třeba s objektovým programováním to není o moc lepší - jsou o tom tlusté knihy a stejně se tady vedou nekonečný debaty, jestli čtverec má dědit z obdélníka nebo opačně. Akorát OOP se každej učil na škole, takže aspoň nějaké základy má a ty pojmy mu nejsou cizí. Kdyby se každej stejně intenzivně učil Haskell, tak by zas všichni znali základy monád a přišlo by jim nepochopitelný, co to má být ten "diamond problem"...

Taky něco jinýho je umět věc pochopit dostatečně na to, abych ji uměl prakticky použít, a něco jinýho je zasadit ji do nějakého širšího, obecnějšího kontextu. O tom prvním se tady u FP žádné sáhodlouhé debaty nevedou, u OOP jo.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #282 kdy: 23. 04. 2018, 12:59:50 »
Ono třeba s objektovým programováním to není o moc lepší
Nejlepší je OOP tak, jak ho má Go. Tam se nikdo nehádá. Ale zase má závislostní typy (typové konstruktory nad hodnotami), to asi aby bylo kde začít bouřlivou diskusi :)

.

Re:Nový objev ve funkcionálním programování
« Odpověď #283 kdy: 23. 04. 2018, 13:10:26 »
... Z toho to musí každý pochopit dostatečně na to, aby to uměl dobře použít. ...
I když s vámi více méně souhlasím, velmi se bráním slovnímu spojení "to musí pochopit každý". Nemusí. Mám dost velkou praxi na to abych věděl, že mnohdy i vzdělaní lidé, kterých si velmi cením, mají v některých směrech své limity a i když to nechápu, nejsou leckdy schopni pochopit některé elementární věci (mnohem jednodušší než monády), tak jako já nebo asi i vy, nechápeme zase věci jiné. Tak to prostě chodí.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Nový objev ve funkcionálním programování
« Odpověď #284 kdy: 23. 04. 2018, 13:36:49 »
Aniž bych chtěl nějak snižovat význam monád, tak programovací technika

- kterou nikdo neumí vysvětlit
- k jejímu pochopení je potřeba diplom z matfyzu
- když někdo myslí, že jí pochopil, tak mu ostatní začnou říkat, že jí nechápe

je poněkud nepraktická. Tím neříkám, že je nepoužitelná, když ale v praxi ke svému kódu posadíte nového člověka, tak by měl být schopný daný kód pochopit. Takhle to působí, že když kód napíšete pomocí monád, tak můžete spolupracovníky vybírat ze všech dvaceti lidí, kteří je v republice chápou - pokud se zrovna nehádají s Prýmkem, jestli je vlastně chápou.

Naprosto s tebou souhlasím. Jenže úplně, a to myslím opravdu úplně! stejný problém je s OOP. Taky to nikdo nechápe. (Respektive každý, kdo pochopí dědičnost získá betonovou jistotu, že pochopil OOP.) A nějak to zvládáme.