Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 ... 120 121 [122] 123 124 ... 618
1816
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 18:41:33 »
Že se v té funkci z příkladu žádná hodnota neliftuje.
Můžu poprosit o definici toho, čemu říkáte "hodnota se liftuje"? Přesnou, matematickou.

1817
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 18:33:09 »
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?
Kdo psal tohle?
Citace
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.
Takže vy nemyslíte "lift", ale výraz "hodnota je liftována". Ok. Co je tam teda za chybu?

1818
Vývoj / Re:Nový objev ve funkcionálním programování
« 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?

1819
Vývoj / Re:Nový objev ve funkcionálním programování
« 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?

1820
Vývoj / Re:Nový objev ve funkcionálním programování
« 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!


1821
Vývoj / Re:Nový objev ve funkcionálním programování
« 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ášť!

1822
Vývoj / Re:Nový objev ve funkcionálním programování
« 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.

1823
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 16:32:45 »
Třeba si myslí, že “liftovat” znamená prostě vytvořit onu monadickou hodnotu jakýmikoliv prostředky, bez returnu.
Je to debil, podle mě si myslí, že liftovat znamená lízat vanilkovou zmrzlinu těhotným komárem.

Není prostě tak dobrej jako my, kteří jsme pochopili definici, která má asi tak dva řádky. Poučíme ho, vola, ať si to dostuduje! Ale tak dobrej jako my stejně nikdy nebude, to je jasný.

1824
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 16:29:31 »
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.

1825
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 16:26:21 »
ta se nehádejte a používejte ho správně https://wiki.haskell.org/Lifting
Aha, takže tohle je špatně: https://wiki.haskell.org/Lifting_pattern

Tak jim to prosímvás napište, ať tu stránku odstraní. Nikoho tak chytrýho jako vy tam totiž nemají.

1826
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 16:26:01 »
Tak to je hodně smutné, neboť jde o něco úplně jiného.
Smutné je, když někdo dělá machra a neumí porozumět jednoduchému sdělení.

Opravdu máte pocit, že "otázka X by byla zodpovězena podobně jako Y" znamená "X je úplně stejná otázka jako Y"?

Ten odkaz je o negenerických funkcích, v otázce je výslovně uvedeno “generic function” (v C++ něco jako “template<typename T> A<T> aFunction(...)”),
Když už jsme u toho, ta otázka je především na rozdíl mezi MATEMATICKÝM pojmem "funkce" a MATEMATICKÝM pojmem "morfismus". S programováním ta otázka vůbec nesouvisí.

1828
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 15:17:42 »
Ta formulace je špatně v tom, že ona funkce nějakou “obyčejnou” hodnotu liftovat může, ale nemusí.
To je striktně vzato pravda. Může třeba vracet konstantu, že. A přesně tohle potřebuje začátečník vědět, protože to je typické použití.

::)

V obecném případě tato funkce vrací monádu, která liftováním vzniknout nemůže (jednoduchým příklad jsou seznamy), jinak by ostatně monády k ničemu nebyly, každá by byla jen “zabalená obyčejná hodnota.”
Aha, takže opět se budeme hádat o význam slova "liftovat" ::) Že já debil jsem nenapsal "vezme tu hodnotu a zmikturuje ji frkodrťákem do monády", to by asi bylo srozumitelnější nebo co.

Bind pro List taky liftuje hodnoty do monády. Akorát to dělá po prvcích, IIRC.

1829
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 12:00:01 »
asi zase budu za onanistu, ale "pointless" je něco jiného, než IMHO vhodnější "wrong"
Nene, tohle není onanismus. Ten chlapík tam fakt říká něco jinýho. Tohle není přiznání, že to má blbě.

Správně vypadající bind by odpovídal "then()" z javascriptového Promise:
Kód: [Vybrat]
function f1(value) {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        value += 'bar'
        alert(value)
        resolve(value)
      }, 1000)
    })
  }

function f2(value) {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        value += 'baz'
        alert(value)
        resolve(value)
      }, 1000)
    })
  }

Promise.resolve('foo')
  .then(f1)
  .then(f2)

Pointa je v tom, že f1 i f2 přijímají value a vrací Promise. To je to "a -> m b". Bez toho to není monáda.

1830
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 11:00:58 »
I "ten lift" v CT je tak obecny, ze muze znamenat leccos, tak netvrdte, ze ma jenom jeden vyznam (v kategorii Hask).
...a vubec, presne tyhle ty pindy imho lidi od CT odrazuji - protoze jakmile se na neco praktickeho ohledne CT zeptaji, tak se to zvrhne v pseudodebatu o ezoterickych (z jejich pohledu) blbostech...

Stran: 1 ... 120 121 [122] 123 124 ... 618