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 ... 117 118 [119] 120 121 ... 618
1771
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:48:32 »
Jo, tím jsem si už prošel. Já teď spíš potřebuju udělat syntézu.
Psal's tady kdysi, že's trochu zkoušel Elm, ne? Ten je na syntézu podle mě ideální - monáda jako obecnej koncept tam není, jenom ty jednotlivý "instance", takže pokud znáš Haskell a chvilku budeš dělat v Elmu, dost rychle tě trkne, co tam chybí a proč se vlastně musí psát desetkrát to samý :)

1772
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:41:06 »
Myslím, že nejlepší by bylo uvést prostě jen příslušný kom. diagram s popisem symbolů, je to názorné a přitom formální, takže by si nikdo nestěžoval na vágní formulaci.
Jj, to jsem právě čekal, že "v" vytasí, když si našel ten paper. Nicméně pak by se dostal do úzkých v tom, že by to byla definice právě jenom pro ty konkrétní symboly :) Proto jsem byl zvědavej, jak si je zadefinuje. Mohla být sranda. No nic :)

1773
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:38:08 »
Tomu rozumím. Ale nejdřív si ty zákony potřebuju nahrát do hlavy, a to není jen tak. Proto se mi líbil ten článek http://funkcionalne.cz/2017/05/monoid/ .
Jo, kdyz začneš pochopením monoidu jako obecnýho konceptu, tak určitě neuděláš chybu :)

BTW, moc hezkej mi přijde tenhle: http://funkcionalne.cz/2014/08/types-will-carry-you-over-the-monads/ - popisuje jenom jeden aspekt věci, ale myslím, že má velkej potenciál vytvořit aha zážitek :)

1774
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:32:50 »
Může, pak to bude “identity function”, je-li F funkce. Nebo “identity functor”, je-li F funktor. To by fakt bylo hodně užitečné. Ani v jednom případě nemůže být C kategorie. A teď jdu spát, dobrou noc.
Tak teď si asi v něčem nerozumíme nebo nevím, proč mi tohle říkáš.

Dejme tomu, že by mohla být funkce z kategorie do kategorie. Potom řekněme, že funkci z C do F(C), kde C je kategorie a F je funktor, nazýváme "frkodrťák F nad C". Pak speciálním případem frkodrťáku je frkodrťák endofunktoru, takzvaný "endofrkodrťák". V čem tam máš problém s endofuktorem?

A ten důvod, proč nemůže být funkce z C do D mi prosím zkus nějak podat, to mě fakt zajímá.

1775
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:19:57 »
Zatím si ten obecný koncept představuju jako ten "recepis".
Tak to asi spíš neděláš dobře... (...s těma sirkama, Jaromíre) :)

Nejsem si jist, zda tato představa je už konečně ta monáda, nebo jen podmnožina jejího užití.
No vždycky, když si řekneš "je to dobrý k X", tak je to konkrétní použití.

Pokud chceš mluvit o monádě jako obecným konceptu, tak si nic nepředstavuj. Obecnej koncept je prostě to, co to je: nějaká struktura, pro kterou platí nějaké zákony. A když něco (cokoliv) tyhle zákony splnít, tak to "je monáda". Úplně stejně jako když něco splní zákony grupy, tak je to grupa :)

1776
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 01:00:06 »
To je ale zase nesmysl, funkce nemůže být z kategorie do kategorie
Nad tímhle jsem taky asi vteřinu dumal, když jsem to psal, a nakonec mě nenapadl jedinej důvod, proč by nemohla. Jakej teda je, jestli jsi ochotnej mi to podat jako pro pitomce?

a navíc endofunktor má ve jménu “endo”, protože operuje v rámci jedné kategorie.
No a ono se snad nemůže C rovnat F(C)? Nebo s čím máš problém?

1777
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 00:54:21 »
Problém tvého tvrzení vidím v tom, že z Maybe, nebo Either tu hodnotu vybalit můžu. Z IO ne. Není monáda jako monáda :-)
Jasně no, však ta IO monáda je jenom jedna konkrétní "instance" obecnýho konceptu, kterej nijak neříká, že tam nějakou hodnotu z něčeho nesmíš mít možnost získat. Neříká ani, že tam musí být nějaká hodnota :) Říká jenom, že jsou nějaký věci a pro ty jsou definovaný nějaký operace a ty musí splňovat nějaký zákonitosti.

Proto vždycky říkám, že jestli si někdo myslí, že když umí použít IO monádu, tak chápe monády, tak může být taky pěkně na omylu :)

1778
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 00:50:24 »
To je ale zase nesmysl, funkce nemůže být z kategorie do kategorie a navíc endofunktor má ve jménu “endo”, protože operuje v rámci jedné kategorie. To je fakt jak diskuse s placatozemcem  ::)
Ty mi tak strašně připomínáš zboje... Jsi to ty?

1779
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 00:37:02 »
tak čtení by snad na humpoláka šlo
Nešlo, protože to je efekt. Do toho souboru ti třeba paralelně někdo jinej zapisuje, ty bys pokaždé přečetl jiný číslo a vrátil ho. Tím by se ti ta celá čistota a lazyness rozbila :)

Proto taky nejde bez IO random.

, ale zápis už ne). Takže nemůžu použít normální pure funkci. Uvožováním ala Promise to celé obrátím a řeknu: "hele, sežeň mi soubor já si z něho načtu hodnotu, něco spočtu, a pak do něj zase zapíšu." - toto je funkce f1. A to celé třikrát. Následně se celý tento recepis vezme, a nějaký interpret to přečte a musí sehnat ten soubor, a musí provést skutečné zápisy mezi funkcí f1, a f2 a f3.

A celé se to vymejšlí kůli tomu, aby se ověřilo, že: za předpokladu, že splníme všechny deklarované požadavky (načtení a zápis a synchronizaci souborů), bude to fungovat, protože to lze zaručit. Tedy oddělení zaručitelných (pure) a nezaručitelných věcí.
Mně přijde, že tam hledáš zbytečný složitosti. Je to fakt jednoduchý: když máš Promise, tak to znamená, že tu hodnotu získáš "někdy" - tj. nemůžeš ji z toho Promisu hned dostat, když se ti zamane. Jediný, co můžeš, je dát mu callback, kterej se má spustit, ta hodnota bude k dispozici. A ten callback ti zase vrátí nějakou hodnotu - a bylo by fajn, kdyby ji taky mohl vrátit "až někdy". No takže máš takový řetěz callbacků a nějakým způsobem ("někde jinde") vošéfováváš, kdy se má který spustit. Ale každopádně se spustí ve správném pořadí, protože chca nechca na sebe musí čekat přesně v tom pořadí, v jakém je zřetězíš.

To je celý, nic víc tam nehledej :)

Ta šaráda s bindem je tam pak víceméně jenom proto, abys ty "callbacky" mohl psát "za sebe" a nemusel je vnořovat. Znáš to: v JS byl dřív callback hell a teď se to hezky napíše jako promise.then(...).then(...).then(...). Ten "then", to je právě přesně bind.

Pokud chceš, můžeš IO psát i v Haskellu bez monády, ale pak to právě musíš vnořovat - úplně přesně jako v JS. Haskell je vlastně vůbec takový JS, nevím, co s tím pořád kdo dělá za vědu :)))

A jestli se alespoň trochu chytám, tak ten lift je ta část, kdy ta funkce předává roli tomu interpretu, tak? Nebo jinak?
No... takhle bych to asi nenapsal, protože mi to přijde trochu zavádějící, ale myslíš to asi dobře. Fígl je v tom, že ten "callback" (neříkejme tomu lift, je to fakt pitomina) vrací jakoby "zabalenou hodnotu", kterou může "rozbalit" a předat do dalšího callbacku jenom runtime - ty to v jazyce udělat nemůžeš.

1780
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 21. 04. 2018, 00:13:21 »
Taky se mi líbilo "lift je operace která umožňuje aplikovat původní funkci v novém prostředí". To je inspirativní.
Jo. Ale chybí mi tam to nejzásadnější: za zachování struktury. "Aplikovat původní funkci v novém prostředí" bych mohl všelijak, že jo... Proto tam jsou ta pravidla, co "v" tak pěkně popsal - ta to garantují.

1781
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 20. 04. 2018, 23:52:15 »
Takže "v" nekomunikuje. Hm, tak to byl hodně smutný příběh s ještě smutnějším koncem :(

Tak just for record (kdyby to tady náhodou taky četl ještě někdo jiný, koho by zajímalo to původní téma):

Hlavní fígl monády oproti normálnímu řetězení normálních funkcí je, že se dají řetězit funkce, které přijímají parametr z "normálního světa" ("normálních hodnot"), ale vrací hodnotu "z jiného světa". Problém toho příkladu v PHP, u kterého Smutný příběh začal, je, že parametr i výsledná hodnota jsou "z normálního světa". To mě hnedka trklo a nezdálo se mi to. Ten příklad prostě podle mě nevystihuje to hlavní, o co v tom všem jde. Každá z těch zřetězených funkcí totiž musí "skákat nahoru", do toho jiného ("vyššího") světa, takže to zřetězení pak vlastně "skáče nahoru a dolů", přimž je zajímavé, že uvnitř jazyka jde skočit jenom nahoru. Skokem dolů se totiž realizuje ten "nečistý" efekt, který v jazyce jako takovém nechceme. Zajímavé a elegantní. Snadno pochopitelné na příkladě Promise z JS, který dělá přesně to samé.

No a je otázka, jak chceme to, co ta "funkce z normálního světa do jiného světa" dělá, nazývat. Pokud jí budeme říkat "funkce z kategorie C do kategorie F(C), kde F je endofunktor takový, že [bla bla bla]", tak to nikomu nic neřekne. Onanie dobrá, ale do diskuse k ničemu.

Když se něco posunuje na nějakou vyšší úroveň, tak se tomu často říká "lift" (může to znamenat různé věci v různých kontextech, ale společné to má ten "skok do vyššího světa"), takže mě, blbce starýho, po ránu nenapadlo napsat nic jinýho, než že ta funkce "liftuje", což nebylo vůbec šťastný, protože mě mohlo napadnout, že člověk, který zná Haskell, si pod tím slovem představuje něco dost konkrétního.

No a to je všechno. S normálním člověkem(TM) by to probíhalo asi takhle:

Normální člověk: Hele, nazývat to "liftuje" mi nepřijde dvakrát šťastný. Pod tím by si někdo mohl představit, že tam probíhá přesně to, co v liftA, liftM atd.

Já: No jo, máš pravdu, su piča stará zbrklá, jak tomu teda budem říkat? Existuje pro to nějakej název?

Zbytek Smutného příběhu už je jenom o tom, že mě zajímalo, jak moc namistrovanej "v" je a jestli má být na co. Potvrdilo se, čeho jsem se obával a co jsem tušil... Je fakt zajímavý, že tohle pozoruju převážně u anonymů...

1782
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 20. 04. 2018, 23:46:41 »
To mi vůbec neva.
Myslím, že by ti vůbec nemuselo vadit ani kdybys vůbec nevěděl, že nějakej endofunktor existuje, beztak je to much ado about nothing ;)

1783
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 20. 04. 2018, 23:23:29 »
Mě by se líbilo, když byste každý napsal svou definici, nějak to popsal, a dohadovat se o tom, kdo má pravdu se můžete potom.
Já žádnou "svou definici" nemám a už vůbec nemám potřebu se o ni hádat.

endofunktor je nóbl výraz pro funkce
Není.

1784
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 20. 04. 2018, 23:11:49 »
Prosím tě, zkrať to. Prostě řekni, co se ti na tom nelíbí, ať neplejtváme bajty.
Sorry, mě to taky nebaví, ale holt musím zjistit, jestli je "v" ochoten aspoň k normální komunikaci, tj. aspoň k odpovídání na nekomplikované otázky. Pokud není a tímpádem k žádné rozumné diskusi není prostor, tak já si tady honit triko nepotřebuju.

1785
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 20. 04. 2018, 23:08:59 »
hned na prvním řádku: "připomínky vítány"
Já to nechci připomínkovat, ptal jsem se na něco jinýho.

Stran: 1 ... 117 118 [119] 120 121 ... 618