Fórum Root.cz
		Hlavní témata => Vývoj => Téma založeno: MonadsAreEvil  01. 04. 2018, 23:24:36
		
			
			- 
				Nejpřednější výzkumníci právě oznámili objev kryptomonád, jedná se o dvojjedinost blockchainu a monád. Nový objev aspirující na Nobelovu cenu se nazývá kryptomonáda, viz Wikipedie.
			
 
			
			- 
				Celkem slabý apríl mimo jiné proto, že za objev ve funkcionálním programování by mohla být případně Fieldsova medaile, ale nikdy Nobelovka.
Jinak by mě zajímalo, v čem by taková kryptomonáda spočívala: že by se za každé použití operátoru bunda muselo platit kryptoměnou? S tímhle určitě dřív nebo později nějaký kokot přijde: Monad As A Service!
			 
			
			- 
				
Jinak by mě zajímalo, v čem by taková kryptomonáda spočívala: že by se za každé použití operátoru bunda muselo platit kryptoměnou? S tímhle určitě dřív nebo později nějaký kokot přijde: Monad As A Service!
 Podívej se na tu Wikipedii. A pak se douč vyšší druhy.
			 
			
			- 
				Toto je nevtipny prispevok. Monady su seriozna vec.  Vela ludi ich vobec nepochopi. Kto ovlada monady, moze uz robit vlastne vsetko, lebo je tak mudry. Ja som presiel z javy na haskell pred dvomi tyzdnami a  prijali ma ako programatora v ruby.
			
 
			
			- 
				
Kto ovlada monady, moze uz robit vlastne vsetko
 Jo, třeba dělat bryndzu a střihat ovce. ;)
			 
			
			- 
				Ale budou fungovat jen v Chrome, Chromiu a Chromistě  8)
			
 
			
			- 
				
Kto ovlada monady, moze uz robit vlastne vsetko
 Jo, třeba dělat bryndzu a střihat ovce. ;)
Aj na to sa da napisat monada. Ale je to plytvanie talentom.
			 
			
			- 
				
Kto ovlada monady, moze uz robit vlastne vsetko
 Jo, třeba dělat bryndzu a střihat ovce. ;)
Aj na to sa da napisat monada. Ale je to plytvanie talentom.
   No ale ty talent nemáš, takže to musíš dělat i bez monád. Jo a když dojíš ovce, dej si pozor, aby to nebyl beran, minule sis tu stěžoval na mazlavé “mléko” na rukou a oblečení a v ústech ;)
			 
			
			- 
				
Kto ovlada monady, moze uz robit vlastne vsetko
 Jo, třeba dělat bryndzu a střihat ovce. ;)
Aj na to sa da napisat monada. Ale je to plytvanie talentom.
   No ale ty talent nemáš, takže to musíš dělat i bez monád. Jo a když dojíš ovce, dej si pozor, aby to nebyl beran, minule sis tu stěžoval na mazlavé “mléko” na rukou a oblečení a v ústech ;)
Pane, neviem ake drogy beriete, ale uz radsej prestante, pripadne prejdite na ine. O vasom tvrdeni s mazlavym mliekom nemate dokaz.
			 
			
			- 
				
Jo a když dojíš ovce, ...
Když dojím ovci, tak dám kosti na okraj talíře.
			 
			
			- 
				A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Zkuste zagooglit "Monad shell"
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Zkuste zagooglit "Monad shell"
Jestli jde jen o syntax, podobnou lze vyrobit i bez monádů. Třeba přetížením operátorů. Čte to odněkud typové signatury příkazů, aby find vracel list souborů namísto list stringů?
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
To se tady jen tak nedozvíš, protože ten, kdo pochopil monády, ztrácí schopnost je vysvětlit.
			 
			
			- 
				Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
			
 
			
			- 
				
Jo a když dojíš ovce, ...
Když dojím ovci, tak dám kosti na okraj talíře.
 To je rada pro balíka, aby ty kosti nežral? :)
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
 Je to dobré k modifikaci dat v jazycích, ve kterých data modifikovat nelze. Příklady jsou třeba seznam a optional ("nulovatelné reference"). Vysvětlit to jednoduše nejde, je to moc abstraktní. Někteří monády považují za akademickou blbost.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
To se tady jen tak nedozvíš, protože ten, kdo pochopil monády, ztrácí schopnost je vysvětlit.
 A jak to teda člověk pochopí? Někdo, kdo to už zná, mu to nějak vysvětlit musí.
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
 Neumíš googlit? 
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
Monada umoznuje v "pure functional" jazykoch odseparovat side-effekty od hlavneho kodu. Vo vysledku mas cistejsi kod, ktory sa lahsie udrziava a je jednoduchsie mu rozumiet. 
Co je to monada v progamovani, ti z brucha nepoviem, je to pozicany pojem z teorie kategorii v matematike. Monada je monoid v kategorii endofunktorov. Na pochopenie toho treba rozumiet abstraktnej algebre. A tu som v skole presiel z odretymi usami a z hlavy sa mi parilo. 
Ak chces vysvetlenie, co je to v programovani, tu je clanok od tvorcu haskellu:
http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf
Na co sa to ucit:
1. je to dalsi sposob modularizacie
2. je to alternativny pristup k aspektovo-orientovanemu programovaniu
3. casom sa to v nejakej forme ocitne v mainstream programovacich jazykoch
4. umoznuje to iny pohlad na programovanie a prevetra ti to mozgove zavity
5. cim viac ludi to bude ovladat, tym menej pubertalnych, emocionalne nevyzretych jesterov sa bude na internete odbavovat.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
To se tady jen tak nedozvíš, protože ten, kdo pochopil monády, ztrácí schopnost je vysvětlit.
 A jak to teda člověk pochopí? Někdo, kdo to už zná, mu to nějak vysvětlit musí.
Mně bylo vysvětleno, že monáda je jen nějaký box na data či funkce a s tím jsem si musel vystačit. Další možné srovnání je s unixovou rourou nebo s prázdným excelovským chlívkem.
A teď to schytám od těch, kterým se to před chvílí nechtělo vysvětlovat.
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
Monada je monoid v kategorii endofunktorov. 
 Další génius, co to umí skvěle vysvětlit :D
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
To se tady jen tak nedozvíš, protože ten, kdo pochopil monády, ztrácí schopnost je vysvětlit.
 A jak to teda člověk pochopí? Někdo, kdo to už zná, mu to nějak vysvětlit musí.
Mně bylo vysvětleno, že monáda je jen nějaký box na data či funkce a s tím jsem si musel vystačit. Další možné srovnání je s unixovou rourou nebo s prázdným excelovským chlívkem.
A teď to schytám od těch, kterým se to před chvílí nechtělo vysvětlovat.
 Otázka bokem: má PHP monády? Ptám se vážně, PHP neznám, ale web je plný článků o "Monads in C++", "Monads in Java", "Monads in MIPS Assembly" apod. PHP si v této souvislosti nevybavuju.
			 
			
			- 
				
Otázka bokem: má PHP monády? Ptám se vážně, PHP neznám, ale web je plný článků o "Monads in C++", "Monads in Java", "Monads in MIPS Assembly" apod. PHP si v této souvislosti nevybavuju.
Ano, PHP má monády. Jen se v něm tento pojem nepoužívá.
			 
			
			- 
				
Otázka bokem: má PHP monády? Ptám se vážně, PHP neznám, ale web je plný článků o "Monads in C++", "Monads in Java", "Monads in MIPS Assembly" apod. PHP si v této souvislosti nevybavuju.
https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html (https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html)
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
Monada je monoid v kategorii endofunktorov. 
 Další génius, co to umí skvěle vysvětlit :D
Zmente dilera, v prispevku toho bolo napisaneho viac. Nejak vam to "baranie mlieko" nerobi dobre.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
To se tady jen tak nedozvíš, protože ten, kdo pochopil monády, ztrácí schopnost je vysvětlit.
 A jak to teda člověk pochopí? Někdo, kdo to už zná, mu to nějak vysvětlit musí.
Mně bylo vysvětleno, že monáda je jen nějaký box na data 
 Některé se tak tváří, ale třeba pro kontinuace to obecně neplatí.
			 
			
			- 
				
Mně bylo vysvětleno, že monáda je jen nějaký box na data 
 Některé se tak tváří, ale třeba pro kontinuace to obecně neplatí.
To je právě ono. Znalci monád záměrně mlží, aby do jejich náboženství vstupovali jen vyvolení.
			 
			
			- 
				
Mně bylo vysvětleno, že monáda je jen nějaký box na data 
 Některé se tak tváří, ale třeba pro kontinuace to obecně neplatí.
To je právě ono. Znalci monád záměrně mlží, aby do jejich náboženství vstupovali jen vyvolení.
 To podle mě nedělají schválně, taková polovičatá vysvětlení pramení z neznalosti (nebo poloznalosti), někdo si prostě myslí, že už monády pochopil, takže je začne vysvětlovat, ale ve skutečnosti v tom ještě dost plave. Odtud se berou ta různá burrita a já nevím, co všechno. Je to prostě moc abstraktní, IMHO by bylo nejlepší jít na to od té matematické definice a ukázat na konkrétních příkladech, jak ta definice "náhodou" stoprocentně sedí na obrovské množství běžně užívaných datových struktur a konceptů. Monády se přece dají lehce vysvětlit pomocí diagramů (pár šipek) bez nějaké speciální terminologie a té matiky se není třeba bát, to nejsou čísla, ale právě vztahy mezi - v tomto případě - typy a funkcemi. Čísla, jichž se ve skutečnosti mnozí bojí, nechme kupčíkům.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
 Neumíš googlit?
Kdyby mi vystačil Google, tak se tu neptám. To je divný, co?
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
 Na této stránce je to vysvětlené úplně otřesně.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
 Na této stránce je to vysvětlené úplně otřesně.
Člověk, který nestudoval současnou teoretickou matematiku na vysoké škole, si v tom prostě nepočte. K pochopení monád to vlastně ani není potřebné.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
 Na této stránce je to vysvětlené úplně otřesně.
Člověk, který nestudoval současnou teoretickou matematiku na vysoké škole, si v tom prostě nepočte. K pochopení monád to vlastně ani není potřebné.
 Naopak, kdo ji studoval pozná, že to psal někdo, kdo o tom moc neví.
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
 Na této stránce je to vysvětlené úplně otřesně.
Tak samozřejmě může být. Můžeš prosím rozvést, co ti na tom přijde tak otřesné?
			 
			
			- 
				
A muzete nekdo vysvetlit, co to je ta monada. K cemu je to dobre a uvest 
dva tri  priklady?
Tady http://funkcionalne.cz/2017/05/monoid/ (http://funkcionalne.cz/2017/05/monoid/) je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov." - na konkrétním, jednoduchým a praktickým příkladu.
 Na této stránce je to vysvětlené úplně otřesně.
Tak samozřejmě může být. Můžeš prosím rozvést, co ti na tom přijde tak otřesné?
 “je pěkně vysvětlené takové to "Monada je monoid v kategorii endofunktorov."” — O tom tam nic není. Monoid v algebře se podstatně liší od monoidu v kategoriích (což je ten případ monád). “Pěkné vysvětlení” musí dát jasnou definici a příklad té kategorie endofunktorů.
			 
			
			- 
				
Co je to monáda, k čemu je dobré a proč bych se to měl učit? Napište mi 5 důvodů. Děkuji.
Monada je monoid v kategorii endofunktorov. Na pochopenie toho treba rozumiet abstraktnej algebre.
 https://goo.gl/dV6gVk
			 
			
			- 
				
Ano, PHP má monády. Jen se v něm tento pojem nepoužívá.
To je zavádějící, ne-li přímo nepravdivé.
Znovu moje oblíbená analogie: to, že jazyk "má sčítání" a "má celá čísla" NEimplikuje, že "má grupy". Každý jazyk dokáže pracovat s nějakou strukturou, kterou s trochou snahy můžu popsat jako monádu (minimálně třeba s Listem), ale to, o co opravdu jde, je, jestli jazyk umí pracovat s pojmem "monáda" jako abstraktem, ne s konkrétní "instancí" tohoto obecného konceptu. Tohle je potřeba rozlišovat.
Nebo ještě jinak: v Haskellu můžu mít funkci, která něco dělá s nějakou hodnotou typu X přičemž ví jenom to, že X je monáda. Neví, jestli je to List nebo Maybe a je jí to jedno. Pro ni je to prostě monáda a využívá vlastností, které monáda má. Něco takového bys v PHP implementoval asi dost obtížně, protože je k tomu potřeba docela sofistikovaný typový systém.
https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html (https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html)
Takovéhle příklady mi přijdou spíš věci zamlžovat než objasňovat. Člověk, který ví, co to monáda je, to může brát jako srandacvičení na tohle téma, takovou PHP-rozvičku. Ale člověka, který to neví, to jenom zmate.
Hlavní chyba toho příkladu je v tom, že když ho neznalý člověk uvidí, tak si logicky řekne "aha, takže monády jsou vlastně úplná kokotina, která není k ničemu dobrá" - a bude mít pravdu, protože místo téhle překombinované opičárny mohl použít úplně normální řetězení funkcí a efekt by by stejný.
Za druhé mám docela pochybnosti o tom, jestli to má vůbec napsané dobře. Nechce se mi teď po ránu nad tím úplně dumat a PHP neznám, takže se možná mýlím, nicméně: bind (EDIT: respektive ta funkce, která je jeho druhým parametrem) musí liftovat "obyčejnou" hodnotu do monády, to je jeho význam. V Haskellu:
(>>=)  :: m a -> (  a -> m b) -> m b
- vezmu monadickou hodnotu a funkci z normální hodnoty do jiné monády a dostanu jako výsledek hodnotu v té jiné monádě.
Jenže on tam má:
$newMonad = $monad->bind(function($value) {
    var_dump($value);
    return $value / 2;
});
- ta "lambda" je z T do T. To je buď úplně blbě, nebo je to aspoň zavádějící (jak říkám, nechce se mi teď nad tím víc dumat).
Když už příklad tohodle typu (který je sám o sobě zavádějící, viz začátek příspěvku, ale nešť...), tak bych raději ukázal Promise v JS. To je hezká monáda, na které se to fungování dá celkem dobře ukázat.
			 
			
			- 
				...a BTW, extrémně nevhodný je, že tam definuje ten extract() - tím právě totálně zabíjí celou tu myšlenku. Vtip je právě v tom, že z monády tu hodnotu nemůžu "jenom tak" dostat.
Viz opět ten Promise v JS - ten taky žádý "extract" nemá. Hodnotu můžu dostat jedině do callbacku. Což je právě ten princip, to gró, o které jde :)
Právě kdyby měl správně implementovaný ten bind, tak by tam ten extract mít nemohl...
			 
			
			- 
				
Ano, PHP má monády. Jen se v něm tento pojem nepoužívá.
To je zavádějící, ne-li přímo nepravdivé.
Znovu moje oblíbená analogie: to, že jazyk "má sčítání" a "má celá čísla" NEimplikuje, že "má grupy". Každý jazyk dokáže pracovat s nějakou strukturou, kterou s trochou snahy můžu popsat jako monádu (minimálně třeba s Listem), ale to, o co opravdu jde, je, jestli jazyk umí pracovat s pojmem "monáda" jako abstraktem, ne s konkrétní "instancí" tohoto obecného konceptu. Tohle je potřeba rozlišovat.
Aha, takže Haskell nemá objekty, protože s nimi nepracuje jako s abstraktem.
			 
			
			- 
				
Aha, takže Haskell nemá objekty, protože s nimi nepracuje jako s abstraktem.
Nevím, jak to s tím souvisí, ale ne, Haskell pokud vím objekty nemá (ve smyslu OOP) nebo se aspoň běžně nepoužívají. Má daleko lepší věc: typeclasses (přibližně odpovídající traitům v Rustu nebo interfacům v Go).
			 
			
			- 
				
Ano, PHP má monády. Jen se v něm tento pojem nepoužívá.
To je zavádějící, ne-li přímo nepravdivé.
Znovu moje oblíbená analogie: to, že jazyk "má sčítání" a "má celá čísla" NEimplikuje, že "má grupy". Každý jazyk dokáže pracovat s nějakou strukturou, kterou s trochou snahy můžu popsat jako monádu (minimálně třeba s Listem), ale to, o co opravdu jde, je, jestli jazyk umí pracovat s pojmem "monáda" jako abstraktem, ne s konkrétní "instancí" tohoto obecného konceptu. Tohle je potřeba rozlišovat.
Nebo ještě jinak: v Haskellu můžu mít funkci, která něco dělá s nějakou hodnotou typu X přičemž ví jenom to, že X je monáda. Neví, jestli je to List nebo Maybe a je jí to jedno. Pro ni je to prostě monáda a využívá vlastností, které monáda má. Něco takového bys v PHP implementoval asi dost obtížně, protože je k tomu potřeba docela sofistikovaný typový systém.
https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html (https://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html)
Takovéhle příklady mi přijdou spíš věci zamlžovat než objasňovat. Člověk, který ví, co to monáda je, to může brát jako srandacvičení na tohle téma, takovou PHP-rozvičku. Ale člověka, který to neví, to jenom zmate.
Hlavní chyba toho příkladu je v tom, že když ho neznalý člověk uvidí, tak si logicky řekne "aha, takže monády jsou vlastně úplná kokotina, která není k ničemu dobrá" - a bude mít pravdu, protože místo téhle překombinované opičárny mohl použít úplně normální řetězení funkcí a efekt by by stejný.
Za druhé mám docela pochybnosti o tom, jestli to má vůbec napsané dobře. Nechce se mi teď po ránu nad tím úplně dumat a PHP neznám, takže se možná mýlím, nicméně: bind (EDIT: respektive ta funkce, která je jeho druhým parametrem) musí liftovat "obyčejnou" hodnotu do monády, to je jeho význam. V Haskellu:
(>>=)  :: m a -> (  a -> m b) -> m b
- vezmu monadickou hodnotu a funkci z normální hodnoty do jiné monády a dostanu jako výsledek hodnotu v té jiné monádě.
Jenže on tam má:
$newMonad = $monad->bind(function($value) {
    var_dump($value);
    return $value / 2;
});
- ta "lambda" je z T do T. To je buď úplně blbě, nebo je to aspoň zavádějící (jak říkám, nechce se mi teď nad tím víc dumat).
Když už příklad tohodle typu (který je sám o sobě zavádějící, viz začátek příspěvku, ale nešť...), tak bych raději ukázal Promise v JS. To je hezká monáda, na které se to fungování dá celkem dobře ukázat.
tak když se vám nad tím nechce dumat, tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
			 
			
			- 
				
tak když se vám nad tím nechce dumat, tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
Děkuji uctivě, vím dobře, co je to lift.
			 
			
			- 
				
tak když se vám nad tím nechce dumat, tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
Děkuji uctivě, vím dobře, co je to lift.
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
			 
			
			- 
				
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
A Vy, kdybyste nebyl pustý onanista, tak byste chápal, že slova se často nepoužívají jenom v jednom konkrétním úzce definovaném smyslu, ale občas i v nějakém smyslu analogickém.
Například slovo "kruh" se používá ve striktním matematickém smyslu i v různých volných analogiích, např. "rodinný kruh".
...a světe div se, je to tak i se slovem "to lift". Pro demonstraci uveďme např. https://wiki.haskell.org/Lifting_pattern
Q.E.D.
Tímto s dovolením končím. Nemám potřebu se dále účastnit Vaší onanie. Je to prima zábava, ale myslím, že patří do soukromí.
Děkuji vřele za pochopení.
P.S. Tohle fórum jde vážně z kopce, normálně už se tady nedá diskutovat vůbec o ničem. Je to tady samý troll, onanista, troll, onanista. Jediná výjimka jsou některý témata, kde jsou dva onanisti vedle sebe.
			 
			
			- 
				
Jenže on tam má:
$newMonad = $monad->bind(function($value) {
    var_dump($value);
    return $value / 2;
});
- ta "lambda" je z T do T. To je buď úplně blbě, nebo je to aspoň zavádějící (jak říkám, nechce se mi teď nad tím víc dumat).
Však tam píše, že takhle je to blbě a o kus dál vysvětluje, jak by to mělo vypadat.
			 
			
			- 
				
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
A Vy, kdybyste nebyl pustý onanista, tak byste chápal, že slova se často nepoužívají jenom v jednom konkrétním úzce definovaném smyslu, ale občas i v nějakém smyslu analogickém.
použil jste v českém textu anglické slovo, které má v daném kontextu velmi specifický význam (https://wiki.haskell.org/Lifting), kdybyste chtěl použít analogii, čekal bych české slovo
prostě si to dostudujte a přijďte zase diskutovat
			 
			
			- 
				
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
A Vy, kdybyste nebyl pustý onanista, tak byste chápal, že slova se často nepoužívají jenom v jednom konkrétním úzce definovaném smyslu, ale občas i v nějakém smyslu analogickém.
Takže když napíši, že PHP má monády, tak nějaký pustý onanista mi odpoví, že je to zavádějící, neboť tuto abstrakci PHP nepoužívá. Potvrzuje tím tedy můj výrok Ano, PHP má monády. Jen se v něm tento pojem nepoužívá.
			 
			
			- 
				
čekal bych
Měl byste pochopit, že svět se netočí kolem toho, co vy očekáváte. Normální lidi se snaží si porozumět, onanisti se snaží domněle neporozumět a naznačit, že ten druhý je idiot a m2l by si to dostudovat. Třeba pan Zeman je v tom mistr.
"To lift" je prostě posunout něco do nějaké vyšší roviny. Třeba činku o metr výš. Nebo funkci a -> b do m a -> m b. Nebo taky když je ta funkce uvnitř něčeho, tak ji posunout ven. Nebo se posunout z úrovně onanisty do úrovně rozumného diskutující.
A tím s dovolením opravdu končím.
			 
			
			- 
				
čekal bych
Měl byste pochopit, že svět se netočí kolem toho, co vy očekáváte. Normální lidi se snaží si porozumět, onanisti se snaží domněle neporozumět a naznačit, že ten druhý je idiot a m2l by si to dostudovat. Třeba pan Zeman je v tom mistr.
"To lift" je prostě posunout něco do nějaké vyšší roviny. Třeba činku o metr výš. Nebo funkci a -> b do m a -> m b. Nebo taky když je ta funkce uvnitř něčeho, tak ji posunout ven. Nebo se posunout z úrovně onanisty do úrovně rozumného diskutující.
A tím s dovolením opravdu končím.
nejde až tak o to co očekávám já, ale sám jste zmiňoval situaci někoho neznalého kdo přijde k zavádějícími textu
možná byste pozvedl úroveň fóra kdybyste "neliftoval" do osobní roviny
tímto se omlouvám, že jsem to taky udělal v mé prvotní reakci
			 
			
			- 
				
Takže když napíši, že PHP má monády, tak nějaký pustý onanista mi odpoví, že je to zavádějící, neboť tuto abstrakci PHP nepoužívá.
Nejde o onanismus nad slovíčkama, ale o podstatný rozdíl. Ne že PHP "tuto abstrakci nepoužívá", ale že (dost pravděpodobně) v tom jazyce vůbec nejde rozumně nadefinovat (obecně).
Však tam píše, že takhle je to blbě a o kus dál vysvětluje, jak by to mělo vypadat.
Kde to tam je? Nemůžu to najít ani na druhý pokus :)
			 
			
			- 
				
nejde až tak o to co očekávám já, ale sám jste zmiňoval situaci někoho neznalého kdo přijde k zavádějícími textu
Jenže to moje použití toho slova není zavádějící. To slovo má prostě víc významů, používá se různým způsobem. Dal jsem vám jasný příklad, který to ilustruje, dokonce přímo z Haskell wiki, tak o čem je řeč?!
možná byste pozvedl úroveň fóra kdybyste "neliftoval" do osobní roviny
tímto se omlouvám, že jsem to taky udělal v mé prvotní reakci
Děkuji, omluvu přijímám. Příště prosím buďte trochu pomalejší s doporučováním někomu, aby si něco dostudoval. Jak říká Kniha:
A tak, bratří moji milí, budiž každý člověk rychlý k slyšení, ale zpozdilý k mluvení
:)
			 
			
			- 
				
nejde až tak o to co očekávám já, ale sám jste zmiňoval situaci někoho neznalého kdo přijde k zavádějícími textu
Jenže to moje použití toho slova není zavádějící. To slovo má prostě víc významů, používá se různým způsobem.
terminologie kolem monád a podobné havěti je už tak docela problematická, není třeba víc kalit vodu, vaše použití v daném kontextu je zavádějící, viz return (pure,unit), operace které "liftuje" hodnotu do např. monády, podobně lifM/liftA, funkce a -> t b není lift v tomto významu, nedělejte situaci horší (monáda je jako burrito etc)
			 
			
			- 
				
Jenže on tam má:
$newMonad = $monad->bind(function($value) {
    var_dump($value);
    return $value / 2;
});
- ta "lambda" je z T do T. To je buď úplně blbě, nebo je to aspoň zavádějící (jak říkám, nechce se mi teď nad tím víc dumat).
Však tam píše, že takhle je to blbě a o kus dál vysvětluje, jak by to mělo vypadat.
mě by teda taky zajímalo, kde to píše, tenhle bind vypadá spíš jako fmap
			 
			
			- 
				
terminologie kolem monád a podobné havěti je už tak docela problematická, není třeba víc kalit vodu, vaše použití v daném kontextu je zavádějící, viz return (pure,unit), operace které "liftuje" hodnotu do např. monády, podobně lifM/liftA, funkce a -> t b není lift v tomto významu, nedělejte situaci horší (monáda je jako burrito etc)
A kdybych si vymyslel kategorie, ve ktere by ta operace prevodu hodnoty do monady skutecne byla "ten lift", po kterem prahnete, tak byste byl spokojeny?!
I "ten lift" v CT je tak obecny, ze muze znamenat leccos, tak netvrdte, ze ma jenom jeden vyznam (v kategorii Hask).
			 
			
			- 
				
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...
			 
			
			- 
				
Však tam píše, že takhle je to blbě a o kus dál vysvětluje, jak by to mělo vypadat.
Kde to tam je? Nemůžu to najít ani na druhý pokus :)
Really quite simple. And really quite pointless.
			 
			
			- 
				
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...
programuju v haskellu cca 5 let a zatím jsem tomografii nepotřeboval, ale uznávám, že někdo kdo se ponoří hlouběji z toho může mít patologické změny na mozku, zůstal bych u haskellu a netahal do toho CT
			 
			
			- 
				
Však tam píše, že takhle je to blbě a o kus dál vysvětluje, jak by to mělo vypadat.
Kde to tam je? Nemůžu to najít ani na druhý pokus :)
Really quite simple. And really quite pointless.
asi zase budu za onanistu, ale "pointless" je něco jiného, než IMHO vhodnější "wrong"
			 
			
			- 
				
Really quite simple. And really quite pointless.
pro srovnání https://bitbucket.org/jason_delaat/pymonad/
třeba Maybe
			 
			
			- 
				
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:
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.
			 
			
			- 
				
tak když se vám nad tím nechce dumat, tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
Děkuji uctivě, vím dobře, co je to lift.
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
 Ta formulace je špatně v tom, že ona funkce nějakou “obyčejnou” hodnotu liftovat může, ale nemusí. 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.”
			 
			
			- 
				
...funkce vrací monádu...
dobrý den, já jsem onanista (Prý), mohl bych navrhnout v této větě záměnu slova "monádu" za "akci"? popř. "monadickou hodnotu" nebo monadickou akci?
			 
			
			- 
				
...funkce vrací monádu...
dobrý den, já jsem onanista (Prý), mohl bych navrhnout v této větě záměnu slova "monádu" za "akci"? popř. "monadickou hodnotu" nebo monadickou akci?
 Ano, vrací monadickou hodnotu.
			 
			
			- 
				
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.
			 
			
			- 
				
...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...
zůstal bych u haskellu a netahal do toho CT
 Máte pravdu, po překročení určité hranice (například jakmile začnou padat slova jako funktor a morfismus) se diskuse vždy utopí v bahně pseudonázorů. Relevantní dotazy je lepší pokládat na Stackoverflow (nebo Quoře, ale tam už si to člověk musí přebrat). Namátkou veskrze praktická otázka “in what way is a generic function a morphism”, jakpak by asi byla zodpovězena zde :)
			 
			
			- 
				
jakpak by asi byla zodpovězena zde :)
Asi dost podobně jako tahle: https://math.stackexchange.com/questions/2000595/how-is-a-morphism-different-from-a-function
:)
			 
			
			- 
				
jakpak by asi byla zodpovězena zde :)
Asi dost podobně jako tahle: https://math.stackexchange.com/questions/2000595/how-is-a-morphism-different-from-a-function
:)
 Tak to je hodně smutné, neboť jde o něco úplně jiného. 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(...)”),
			 
			
			- 
				
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.
ta se nehádejte a používejte ho správně https://wiki.haskell.org/Lifting
bind neliftuje, return liftuje
			 
			
			- 
				
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í.
			 
			
			- 
				
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í.
			 
			
			- 
				
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.
ta se nehádejte a používejte ho správně https://wiki.haskell.org/Lifting
bind neliftuje, return liftuje
 Třeba si myslí, že “liftovat” znamená prostě vytvořit onu monadickou hodnotu jakýmikoliv prostředky, bez returnu. Akorát teda u některých monád jsou mon. hodnoty, které nevznikají z žádných “obyčejných”, tam by se asi muselo dodefinovat, že se dá liftovat i nic.
			 
			
			- 
				
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.
			 
			
			- 
				
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ý.
			 
			
			- 
				
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.
			 
			
			- 
				
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.
			 
			
			- 
				
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)
			 
			
			- 
				
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.
			 
			
			- 
				
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
			 
			
			- 
				
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.
			 
			
			- 
				
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)).
			 
			
			- 
				
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
			 
			
			- 
				
Ř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ášť!
			 
			
			- 
				
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.
			 
			
			- 
				
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).
			 
			
			- 
				
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!
			 
			
			- 
				
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. 
			 
			
			- 
				
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?
			 
			
			- 
				
raději si zase vybereme nějakou totální kokotinu 
 Pak je tedy asi lepší je nepsat, aby nebylo z čeho vybírat ;)
			 
			
			- 
				
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?
			 
			
			- 
				
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?
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.
Paradoxně naopak právě bind “liftuje”, takže ono to tvrzení je přesně naopak.
			 
			
			- 
				
Pak je tedy asi lepší je nepsat, aby nebylo z čeho vybírat ;)
Chceme se teda bavit jako dospělí lidi, nebo ne?
 Proč tak najednou? :)
			 
			
			- 
				
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?
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?
			 
			
			- 
				
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?
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?
 Že se v té funkci z příkladu žádná hodnota neliftuje. Naopak když se podívám na definici bindu, tak tam se liftuje, jak ostatně přímo plyne z toho odkazu na wiki.haskell.org.
			 
			
			- 
				
Ž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.
			 
			
			- 
				
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í.
Možná by sis měl zamést před vlastním prahem. X-tou stránku se do nich navážíš (a chováš se tak běžně, viz naše diskuse o JS aj.), urážíš je a přitom jsou (minimálně Idris) konstruktivní a slušní. Tak se přestaň chovat jako trotl a diskutuj na úrovni, kterou se tváříš, že vyžaduješ. Prospěje to celýmu rootu. Dík :) 
			 
			
			- 
				
Ž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.
 Ano. Viz https://wiki.haskell.org/Lifting. Hodnota se liftuje (je liftována, snad se shodneme, že to je to samé, i když to zní strašně), když se na ni zavolá lift0 (definice v tom odkazu). 
			 
			
			- 
				
a přitom jsou (minimálně Idris) konstruktivní a slušní.
První(!) v-ův příspěvek:
tak když se vám nad tím nechce dumat, tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
Takhle začít diskusi považuješ za konstruktivní nebo slušný, oboje nebo ani jedno?
			 
			
			- 
				
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í.
Možná by sis měl zamést před vlastním prahem. X-tou stránku se do nich navážíš (a chováš se tak běžně, viz naše diskuse o JS aj.), urážíš je a přitom jsou (minimálně Idris) konstruktivní a slušní. Tak se přestaň chovat jako trotl a diskutuj na úrovni, kterou se tváříš, že vyžaduješ. Prospěje to celýmu rootu. Dík :)
 Trefné. Ale třeba ta diskuse nakonec přece jen nějak půjde.
			 
			
			- 
				
 Hodnota se liftuje (je liftována, snad se shodneme, že to je to samé, i když to zní strašně)
Ano, na tom se shodneme, "prádlo se pere" a "prádlo je práno" má stejný význam.
Hodnota se liftuje, když se na ni zavolá lift0 (definice v tom odkazu).
To není korektní definice. Chtěl jste říct "Hodnota se liftuje právě když se na ni zavolá lift0"?
Pokud ne, zkuste to jinak.
Otázka zůstává: V čem byla ta moje domnělá chyba?
			 
			
			- 
				
Takhle začít diskusi považuješ za konstruktivní nebo slušný, oboje nebo ani jedno?
Asi nemá smysl reagovat, ale nedá mi to. :) 
1) Nezačal diskuzi, reagoval na probíhající diskuzi a (minimálně) nepřesnosti v ní.
2) Jako hodně neslušné vidím třeba
A Vy, kdybyste nebyl pustý onanista, tak byste chápal, že slova se často nepoužívají jenom v jednom konkrétním úzce definovaném smyslu, ale občas i v nějakém smyslu analogickém.
Například slovo "kruh" se používá ve striktním matematickém smyslu i v různých volných analogiích, např. "rodinný kruh".
...a světe div se, je to tak i se slovem "to lift". Pro demonstraci uveďme např. https://wiki.haskell.org/Lifting_pattern
Q.E.D.
Tímto s dovolením končím. Nemám potřebu se dále účastnit Vaší onanie. Je to prima zábava, ale myslím, že patří do soukromí.
Děkuji vřele za pochopení.
P.S. Tohle fórum jde vážně z kopce, normálně už se tady nedá diskutovat vůbec o ničem. Je to tady samý troll, onanista, troll, onanista. Jediná výjimka jsou některý témata, kde jsou dva onanisti vedle sebe.
...což je zvláštní, protože na jednu stranu se přesně nevyjadřuješ (čemuž se nedivím, toto není nejjednodušší látka), ale na stranu druhou po druhých to vyžaduješ nebo kvůli tomu shazuješ (a překrucuješ) jejich příspěvky (viz poslední reakce na @Idris). :) 
A všimni si, že netvrdím, že to někdo nedělá tobě nebo tak. Jen ostatní nekáží vodu a nepijí víno. A to nemám rád. :) Tak to prosím vem a zkus jít příkladem.
			 
			
			- 
				
Hodnota se liftuje, když se na ni zavolá lift0 (definice v tom odkazu).
Chtěl jste říct "Hodnota se liftuje právě když se na ni zavolá lift0"?
Nechtěl.
V čem byla ta moje chyba?
 Protipříkladem bylo vyvráceno, že ve funkci předávané bindu musi být jakýsi lift. Teď by zase mohl převzít štafetu v, i když vlastně už není co dodat. No nic, Zeman taky nepřiznal, že ten Peroutkův článek o Hitlerovi neexistuje, a svět se nezbořil. Root se nezboří kvůli nějakému tvrzení o bindu a liftu (aspoň teda doufám). Třeba je ten lift “vlevo dole” :)
			 
			
			- 
				Nj, taky už dlouho pozoruju, že když se v diskuzi objeví Prýmek, velice často diskuze začně sklouzávat ke slovíčkaření a nekonečném rozebírání "co kdo kdy přesně řekl a jaký byl skutečný význam toho co řekl", místo aby se diskuze tak nějak normálně konstruktivně ubírala dopředu jako u lidí co si chtějí navzájem pomoci a někam se posunout. Nevím co je to za zvláštní auru, ale když mám chuť se nasrat, přečíst pár jeho příspěvků funguje vcelku spolehlivě..
			
 
			
			- 
				
Tohle fórum jde vážně z kopce, normálně už se tady nedá diskutovat vůbec o ničem. Je to tady samý troll, onanista, troll, onanista. Jediná výjimka jsou některý témata, kde jsou dva onanisti vedle sebe.
...což je zvláštní, protože na jednu stranu se přesně nevyjadřuješ (čemuž se nedivím, toto není nejjednodušší látka), ale na stranu druhou po druhých to vyžaduješ nebo kvůli tomu shazuješ (a překrucuješ) jejich příspěvky 
 Takovým stylem vedení diskuse dotyčný většinou maskuje neznalosti nebo nejistotu (resp. obojí). Asi by mělo jít (bohužel jako v současné české politické diskusi) především o základní slušnost a etiku, tj. neurážet, neponižovat, přiznat chybu nebo neznalost. Ale jak je vidět, nakonec se neomalenost a hulvátství přece jen obrátí proti těm, co základní pravidla chování nedodržují - v politice i na Rootu.
			 
			
			- 
				
Nj, taky už dlouho pozoruju, že když se v diskuzi objeví Prýmek [...] Nevím co je to za zvláštní auru, ale když mám chuť se nasrat, přečíst pár jeho příspěvků funguje vcelku spolehlivě..
 Mně tedy k navození tohoto stavu mysli (nas...) stačí někteří z českých politiků a na Rootu bych se mu naopak rád vyhnul.  :(
			 
			
			- 
				
Ale zase abychom byli fér, ono těch "liftů" je několik, to pak mate.
pokud pominu tu operaci se zdrojákem co zmiňoval Prýmek, tak vím o return/pure/unit, liftA, liftM a MonadTrans liftu, všechny mi připadjí příbuzné, uniká mi některá příchuť?
			 
			
			- 
				
Paradoxně naopak právě bind “liftuje”, takže ono to tvrzení je přesně naopak.
můžete to rozvést?
			 
			
			- 
				
Ale zase abychom byli fér, ono těch "liftů" je několik, to pak mate.
pokud pominu tu operaci se zdrojákem co zmiňoval Prýmek, tak vím o return/pure/unit, liftA, liftM a MonadTrans liftu, všechny mi připadjí příbuzné, uniká mi některá příchuť?
 Ano, všechny jsou příbuzné, myslím, že Vám nic zásadního neuniká.
			 
			
			- 
				
Paradoxně naopak právě bind “liftuje”, takže ono to tvrzení je přesně naopak.
můžete to rozvést?
 Jistě. Na té haskellí wiki (heslo Lifting) se (pro unární funkce) uvádí lift=fmap. A protože bind je (λx)(λf) join(fmap(f)(x)) tak ve světle oné definice se “liftuje” f, a sice z a -> m b na m a -> m m b
			 
			
			- 
				
Nechtěl.
Dobře, takže konstatuju, že to, co jste napsal, není definice.
Pořád nám teda zůstává otázka: v čem měla být ta moje domnělá chyba?
Protipříkladem bylo vyvráceno, že ve funkci předávané bindu musi být jakýsi lift.
Nevím, jaký má smysl to vyvracet, když to nikdo netvrdil, ale budiž. Na tom se bez problémů shodneme, že slovo "lift" v té funkci být nemusí. Takže tím bylo vyvráceno něco, o čem vůbec není diskuse a vraťma se k naší otázce.
Pořád nám teda zůstává: v čem měla být ta moje domnělá chyba?
			 
			
			- 
				
pokud pominu tu operaci se zdrojákem co zmiňoval Prýmek, tak vím o return/pure/unit, liftA, liftM a MonadTrans liftu, všechny mi připadjí příbuzné, uniká mi některá příchuť?
Ano. https://en.wikipedia.org/wiki/Lift_(mathematics) - instancí si můžete vymyslet nekonečně mnoho. Skoro bych řekl, že nespočetně, ale nebudu se pouštět na tenkej led :)
			 
			
			- 
				
1) Nezačal diskuzi, reagoval na probíhající diskuzi a (minimálně) nepřesnosti v ní.
Takhle on začal diskusi, takhle do diskuse vstoupil.
2) Jako hodně neslušné vidím třeba
Ano, to je neslušné. Pokud se mnou někdo začne komunikovat neslušně, dost často mu odpovím stejně. Není to moc pěkná vlastnost a asi by bylo fajn se jí zbavit, ale kdo's bez viny, první hoď kamenem...
(a překrucuješ) jejich příspěvky (viz poslední reakce na @Idris). :) 
Nejsem si vědom, že bych cokoli překrucoval.
A to nemám rád. :) Tak to prosím vem a zkus jít příkladem.
Já zas nemám rád, když někdo napíše "tak si to dostudujte" - je v tom 1) arogance 2) urážka 3) pokrytectví, které 1 a 2 maskuje vykáním do rádobyslušnosti.
			 
			
			- 
				
1) Nezačal diskuzi, reagoval na probíhající diskuzi a (minimálně) nepřesnosti v ní.
Takhle on začal diskusi, takhle do diskuse vstoupil.
2) Jako hodně neslušné vidím třeba
Ano, to je neslušné. Pokud se mnou někdo začne komunikovat neslušně, dost často mu odpovím stejně. Není to moc pěkná vlastnost a asi by bylo fajn se jí zbavit, ale kdo's bez viny, první hoď kamenem...
(a překrucuješ) jejich příspěvky (viz poslední reakce na @Idris). :) 
Nejsem si vědom, že bych cokoli překrucoval.
A to nemám rád. :) Tak to prosím vem a zkus jít příkladem.
Já zas nemám rád, když někdo napíše "tak si to dostudujte" - je v tom 1) arogance 2) urážka 3) pokrytectví, které 1 a 2 maskuje vykáním do rádobyslušnosti.
"Nechce se mi teď po ránu nad tím úplně dumat" - takto jste začal a to mě vytočilo, za osobní narážku jsem se omluvil a k věcné části zdroj dodal
na fóru vykám každému, z toho nic nevyvozujte
			 
			
			- 
				
Já zas nemám rád, když někdo napíše "tak si to dostudujte"
 V tomto případě měl ale pravdu a napsal to slušně (a podle všeho v dobré víře, bez arogance), tak nebyl důvod sprostě ho urážet. Nemůžu mluvit za v, ale předpokládám, že na slušně položený dotaz by věcně reagoval a látku dovysvětlil. Po spršce urážek by se k tomu pochopitelně už neměl asi nikdo.
			 
			
			- 
				 Dává Vám smysl to s tím liftem v bindu? Popravdě Haskell moc neznám a ta terminologie s lifty je mi cizí, vždy jsem používal jen return/fmap/join, nicméně podle té haskellí wiki jsem pochopil dobře, že lift pro unární funkce je fmap, kterážto funkce se v bindu používá.
			
 
			
			- 
				
"Nechce se mi teď po ránu nad tím úplně dumat" - takto jste začal a to mě vytočilo, 
Proč by mělo kohokoli vytáčet, že se mi po ránu nechtělo nějak superhluboko dumat nad článkem, který se mi na první pohled jevil chybný (a měl jsem v tom pravdu)? Snad možná autora článku by to mohlo popudit.
za osobní narážku jsem se omluvil 
Však jsem taky omluvu přijal. Kdybyste potom začal diskutovat jako dospělý (tj. např. neopakoval znovu věci, které jsem vám už vysvětlil), mohlo být všechno ok. 
na fóru vykám každému, z toho nic nevyvozujte
Vykání má smysl jako výraz úcty. Pokud tam úcta není (protože jsou tam urážky), nedává vykání sebemenší smysl a spíš ještě víc uráží.
			 
			
			- 
				
Dává Vám smysl to s tím liftem v bindu? 
Promiňte, ale nemám teď v plánu začínat nějakou jinou diskusi o něčem úplně jiném.
Proveďme si teda rekapitulaci: 
1. tvrdil jste, že jsem udělal nějakou chybu
2. tvrdil jste, že je pravda, že bych se měl něco doučit
3. tvrdil jste, že to něco je tak triviální, že se neobtěžujete s polopatickým rozepisováním
4. já jsem vás teda vyzval, ať mi jasně a korektně (tj. ideálně co nejvíc matematicky) popíšete, v čem ta chyba spočívala
Teď se teda předpokládám snažíte v několika příspěvcích mi tu chybu ukázat, ale zatím jsme se zasekli na tom, že ani nejste schopný korektně definovat pojem, se kterým operujete.
Takže momentálně jsme ve stádiu, že jste se snažil definovat pojem "hodnota je liftována" za účelem ukázat mi moji chybu.
Pokračujte v tom tedy a neotevírejte jiná témata.
Je to pro vás triviální, tak snad stačí jedna dvě jasné definice, dvě vysvětlující věty a důkaz sporu s nějakým mým tvrzením a jsme hotovi, ne?
Popravdě Haskell moc neznám a ta terminologie s lifty je mi cizí
Já taky Haskell moc neznám (skoro vůbec), takže v tom bych neviděl problém.
			 
			
			- 
				
 Dává Vám smysl to s tím liftem v bindu? Popravdě Haskell moc neznám a ta terminologie s lifty je mi cizí, vždy jsem používal jen return/fmap/join, nicméně podle té haskellí wiki jsem pochopil dobře, že lift pro unární funkce je fmap, kterážto funkce se v bindu používá.
jestli jsem vás dobře pochopil (a neztratil se v tom), tak souhlasím - pomocí bindu můžete definovat fmap, což je, jak jste napsal, lift unární funkce do monády (ale v haskellu je každá monáda funktor, takže fmap je vždy k dispozici)
			 
			
			- 
				
Dává Vám smysl to s tím liftem v bindu? 
Promiňte, ale nemám teď v plánu začínat nějakou jinou diskusi o něčem úplně jiném.
 To byla reakce na v, slušně se mě na něco zeptal a já mu slušně odpověděl. A jak je vidět výše, neměl problém pochopit, že když je v citaci “v”, je otázka adresována jemu :)
			 
			
			- 
				
A jak je vidět výše, neměl problém pochopit, že když je v citaci “v”, je otázka adresována jemu :)
No v citaci byl úplně jiný příspěvek, tak jsem tuhle šifru nějak nerozklíčoval, ok, moje chyba.
Takže fajn, udělal jste si pár odboček, zopakoval, že si mám něco dostudovat a v by mi jistě rád látku vysvětlil, tak se prosím vraťme k našemu tématu:
Otázka zůstává: V čem byla ta moje domnělá chyba?
Je to pro vás triviální, tak to snad zvládnete v jednom příspěvku, docela rád bych se najedl a šel si odpočinout do vany. Díky.
			 
			
			- 
				
tak se prosím vraťme k našemu tématu
 Napsal jsem to dostatečně jasně. Pokud mi v nebo někdo jiný, kdo 1) zná FP a 2) umí slušně diskutovat řekne, že jsem někde udělal chybu nebo něco opomenul, rád se opravím nebo vysvětlení doplním. Jinak nemíním ztrácet čas.
			 
			
			- 
				
Napsal jsem to dostatečně jasně.
Ne, skončil jste tím, že jste za definici vydával něco, co definice není
https://forum.root.cz/index.php?topic=18107.msg261597#msg261597
Pokud to neumíte napsat formálně správně (i když je to "tak triviální"), tak ok, můžeme si to tak říct, vy odvoláte svoje silné řeči a můžeme se rozejít jako dospělí.
Anebo to můžete nechat ležet, neomluvit se a v nějakém příštím tématu zas někomu radit, ať si něco dostuduje. Při nejhorším si změníte nick, to je výhoda anonymů.
Pokud mi v nebo někdo jiný, kdo 1) zná FP a 2) umí slušně diskutovat řekne, že jsem někde udělal chybu nebo něco opomenul
1) Nevím, jestli "znám FP", ale ve funkcionálních jazycích programuju už docela dlouho. 
2) Slušně jsem vás upozornil, že věta "rohlík je pečivo" není definice pečiva. To je zjevná chyba.
, rád se opravím nebo vysvětlení doplním. Jinak nemíním ztrácet čas.
Opravte nebo doplňte.
Jinak nemíním ztrácet čas.
Jak jsem řekl, já taky nemám sebemenší potřebu ztrácet čas. Napište do jednoho příspěvku formálně správně, kde jsem udělal chybu, a máme hotovo.
			 
			
			- 
				
Pokud to neumíte napsat formálně správně 
 Tak ještě jednou, já i v jsme na tu chybu upozornili (a napsali dostatečně jasně, proč je to chyba), na tom se shodneme. Jinak jak tu psali jiní, těžko můžete vyžadovat nějaké “formální vyjadřování”, když sám píšete vágně a popíráte vlastní slova. Ostatně podle příspěvků několika jiných uživatelů jste tu známá “firma”, když se sejde takováto násobná zpětná vazba (mimochodem ode všech napsaná slušně a v dobré víře), asi byste se měl nad svým chováním zamyslet. Nikomu tu asi nevadí, že se chcete donekonečna hádat, ale ono bez znalostí základní terminologie ani není o čem (domnívám se, že právě proto zmiňoval v to dostudování, aby vůbec byla možná nějaká rozumná diskuse - tímto ho prosím, ať mě opraví, mýlím-li se).
			 
			
			- 
				
a napsali dostatečně jasně, proč je to chyba
Tak se doučte, co to znamená "formálně správně".
To vypadá nějak takhle:
Mějme kategorii Hask, tj. objekty jsou haskellovské typy, morfismy jsou funkce. Operací "lift" potom v tomto kontextu nazýváme morfismus, který ...
...no a to je v rozporu s tím, že jste tvrdil, že "lift" je operace ledvin.
Nikomu tu asi nevadí, že se chcete donekonečna hádat
Ale já se nechci donekonečna hádat. Vy a v jste mi řekli, že tomu nerozumím a mám si to dostudovat. Tak mi formálně správně vysvětlete, v čem jsem udělal chybu a měl bych si to dostudovat. Jediný, kdo to protahuje, jste vy.
Je to triviální, stačí vám na to jeden příspěvek.
			 
			
			- 
				
...no a to je v rozporu s tím, že jste tvrdil, že "lift" je operace ledvin.
 Nevybavuji si, že bych něco takového tvrdil. A nemyslím, že byste si po tomto lživém tvrzení zasloužil, abych na nějaké další příspěvky reagoval.
			 
			
			- 
				
Nevybavuji si, že bych něco takového tvrdil. A nemyslím, že byste si po tomto lživém tvrzení zasloužil, abych na nějaké další příspěvky reagoval.
To má být pokus o vtip, o trolling, nebo to myslíte vážně?
			 
			
			- 
				ad Prymek:
Proc se porad rozcilujete a napadate diskutujici? Proc kazdy prispevek rozsekate na malem jednotlive vety a reagujete na kazdou zvlast? Proc reagujete hnidopissky na uplne nepodstatne veci? Matematika a informatika se da vysvetlovat i popularni formou a nejen pomoci definice, veta, dukaz. Samozrejme do urcite miry abstrakce. 
Na wikipedii se doctu:
"In functional programming, a monad is a design pattern that defines how functions, actions, inputs, and outputs can be used together to build generic types,[1] with the following organization:
Define a data type, and how values of that data type are combined.
Create functions that use the data type, and compose them together into actions, following the rules defined in the first step."
To myslim dava dobrou predstavu. A neni potreba zabredavat do teorie kategorii, cemuz stejne nikdo poradne nerozumi. 
			 
			
			- 
				
To myslim dava dobrou predstavu. A neni potreba zabredavat do teorie kategorii, cemuz stejne nikdo poradne nerozumi.
Nevím, proč mi to říkáte. Já jsem schválně to, co jsem říkal, ilustroval na Promise z JS, což je imho nejjednodušší a zároveň nejvýstižnější příklad, kterému rozumí úplně každý programátor. A pokud mu někdo nerozumí, tak asi stejně nemá smysl, aby se snažil pochopit monády. Já rozhodně nejsem někdo, kdy by prosazoval nutnost CT, naopak, vždycky jsem tady prosazoval, že znalost CT je hezké opepření, ale ani pro programování v Haskellu není potřeba, natož jinde.
			 
			
			- 
				už jsem se na to chtěl vykašlat, ale ráno mi nějak pomalu startoval eclipse... E. Moggi má definici liftingu v "An Abstract View of Programming Languages"
			
 
			
			- 
				
už jsem se na to chtěl vykašlat, ale ráno mi nějak pomalu startoval eclipse... E. Moggi má definici liftingu v "An Abstract View of Programming Languages"
Ja jsem ale definici liftu uz odkazoval:
 https://en.wikipedia.org/wiki/Lift_(mathematics)
Proc potrebujeme hledat nejakou dalsi?
Tvrdil jste, ze ten pojem pouzivam spatne, protoze ho neznam, takze porad cekam na vysvetleni, proc to bylo spatne, podle jake definice, cim se to od ni lisi a proc by prave tahle definice mela byt ta jedina spravna.
			 
			
			- 
				
už jsem se na to chtěl vykašlat, ale ráno mi nějak pomalu startoval eclipse... E. Moggi má definici liftingu v "An Abstract View of Programming Languages"
 Tak už ho chudáka nechte, včera nakonec vytrolil sám sebe :)
			 
			
			- 
				
Tak už ho chudáka nechte, včera nakonec vytrolil sám sebe :)
Porad je to ale lepsi, nez nekoho napominat, ze si ma nastudovat "trivialitu" a pak tu "trivialitu" ani neumet korektne zadefinovat, neumet to priznat, neumet se omluvit a dal se tvarit jako mistr sveta.
Ale zivot anonyma je sladky... Nic se nedeje, trollime dal! Nicku je dost!
			 
			
			- 
				
Porad je to ale lepsi, nez nekoho napominat, ze si ma nastudovat "trivialitu" a pak tu "trivialitu" ani neumet korektne zadefinovat, neumet to priznat, neumet se omluvit a dal se tvarit jako mistr sveta.
Dal ti protipříklad k tvému tvrzení. Je zcestné po něm chtít vlastní definici (na kterou dal odkaz) s tím, že jinak ti to nemohl vyvrátit (to by ta matematika pak taky vypadala...).
Ale zivot anonyma je sladky... Nic se nedeje, trollime dal! Nicku je dost!
Není ničí povinnost tu vystupovat pod svým jménem. A ty nejsi víc než jakýkoliv jiný diskutující pod svým nickem, tak by bylo fajn se tak přestat chovat.
Někteří lidé k tomu mají své důvody. Já si třeba účet na rootu (a jiných webech) zakládal v době, kdy jsem ještě aktivně psal články pro jiný server a tudíž jsem nechtěl, aby tato skutečnost ovlivňovala diskuzi. :) 
			 
			
			- 
				
Dal ti protipříklad k tvému tvrzení. 
Nedal. To, ze k necemu napisu, ze to je protipriklad, z toho nedela protipriklad.
Nedal, protoze dat nejde.
definici (na kterou dal odkaz) 
Na zadnou definici zadny odkaz nikdo nedal. Placnout jenom tak do vetru odkaz https://wiki.haskell.org/Lifting neni zadne podani definice. Uz proto, ze uz z prvniho letmeho pohledu na tu stranku je jasne, ze jsou tam popsany ctyri ruzna (!!!!) pouziti toho pojmu. Jiste, vsechna ta pouziti maji neco spolecneho, ale o tom to prave je - kdyby panove diskutovali korektne, museli by minimalne nejak verohodne ukazat, ze to moje pouziti toho pojmu je uplne jine nez tyhle ctyri.
Coz ovsem nemuzou, protoze to ... nejde.
Je zcestné po něm chtít vlastní definici s tím, že jinak ti to nemohl vyvrátit
Nevim, co je na tom zcestneho. Pokud budu zidli rikat "stul" a nekdo me bude chtit opravit, ze to slovo pouzivam blbe, tak proste musi rict "Hele, Mirdo, slovo "stul" se pouziva pro predmety ktere ...".
...anebo se tomu muze tricet prispevku vyhybat a misto toho hyrit radami, abych si to dostudoval. Taky cesta.
Není ničí povinnost tu vystupovat pod svým jménem. A ty nejsi víc než jakýkoliv jiný diskutující pod svým nickem, tak by bylo fajn se tak přestat chovat.
Nerekl jsem, ze jsem neco vic. Rekl jsem, ze pro anonyma je jednodussi diskutovat nekorektne nez pro ne-anonyma. Napr. proto, ze kdyz tady ja urazim Cikadu pod svym jmenem, tak se mi taky muze zitra stat, ze mi nekdo zazvoni u dveri a da mi jednu poradnou do nosu. Protoze proste Cikada ma dva metry a desne ji bavi thai box.
Anonymovi tohle riziko nehrozi, muze si nadavat komu chce jak chce a nic z toho pro nej neplyne, zadnou zodpovednost za to neprijima.
			 
			
			- 
				
E. Moggi má definici liftingu v "An Abstract View of Programming Languages"
 Hezké, je tam definice i s kom. diagramem, akorát se v něm “liftuje” dolů :)
			 
			
			- 
				
E. Moggi má definici liftingu v "An Abstract View of Programming Languages"
 Hezké, je tam definice i s kom. diagramem, akorát se v něm “liftuje” dolů :)
mno mi u MonadTrans liftu vždyky přišlo, že by se měl spíš jmenovat sink nebo třeba dive :D
			 
			
			- 
				
Anonymovi tohle riziko nehrozi, muze si nadavat komu chce
 Jediné nadávky jsi psal ty, navíc nevyprovokované (např. "onanista"), všichni ostatní psali věcně a bez urážek.
			 
			
			- 
				
Na zadnou definici zadny odkaz nikdo nedal. Placnout jenom tak do vetru odkaz https://wiki.haskell.org/Lifting neni zadne podani definice. Uz proto, ze uz z prvniho letmeho pohledu na tu stranku je jasne, ze jsou tam popsany ctyri ruzna (!!!!) pouziti toho pojmu. 
fajn, nenapadlo mě, že to vidíte takhle, asi pro to vaše sebevědomé vystupování, pokusím se popsat, proč to jsou čtyři různé inkarnace stejného konceptu (Moggi, viz výše), ale možná až večer
			 
			
			- 
				
fajn, nenapadlo mě, že to vidíte takhle
No, kdybyste diskutoval korektne, tak vas nic napadat nemusi a na vyzvu "napiste definici" byste napsal definici a bylo by jasno.
, asi pro to vaše sebevědomé vystupování
Dovolím si připomenout, že vy jste do diskuse vstoupil s tím, že tomu nerozumím a mám si to dostudovat. Čili sebevědomí vám zřejmě taky nechybí.
, pokusím se popsat, proč to jsou čtyři různé inkarnace stejného konceptu (Moggi, viz výše), ale možná až večer
Výborně! Jsem velice zvědavý, jak to popíšete.
A myslím, že by diskusi dost pomohlo, kdybyste zároveň s tím už konečně opravdu korektně popsal, proč podle vás ten "callback" z Monády není "inkarnace tohoto konceptu":
(>>=)  :: m a -> (  a -> m b) -> m b
O této funkci jsem se vyjádřil, že "liftuje běžné hodnoty do monády":
a -> m b
k čemuž jste se vyjádřil takto:
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
Zajímá mě teda ze všeho nejvíc vysvětlení, proč tato funkce není "inkarnace tohoto konceptu".
			 
			
			- 
				Jo a ještě bych samozřejmě taky potřeboval vysvětlit, jestli je nebo není "inkarnací stejného konceptu" ta definice liftu z Wiki https://en.wikipedia.org/wiki/Lift_(mathematics)
			
 
			
			- 
				
fajn, nenapadlo mě, že to vidíte takhle
No, kdybyste diskutoval korektne, tak vas nic napadat nemusi a na vyzvu "napiste definici" byste napsal definici a bylo by jasno.
, asi pro to vaše sebevědomé vystupování
Dovolím si připomenout, že vy jste do diskuse vstoupil s tím, že tomu nerozumím a mám si to dostudovat. Čili sebevědomí vám zřejmě taky nechybí.
, pokusím se popsat, proč to jsou čtyři různé inkarnace stejného konceptu (Moggi, viz výše), ale možná až večer
Výborně! Jsem velice zvědavý, jak to popíšete.
A myslím, že by diskusi dost pomohlo, kdybyste zároveň s tím už konečně opravdu korektně popsal, proč podle vás ten "callback" z Monády není "inkarnace tohoto konceptu":
(>>=)  :: m a -> (  a -> m b) -> m b
O této funkci jsem se vyjádřil, že "liftuje běžné hodnoty do monády":
a -> m b
k čemuž jste se vyjádřil takto:
kdybyste to věděl, tak byste nenapsal "bind... funkce, která je jeho druhým parametrem musí liftovat "obyčejnou" hodnotu do monády", leda že byste chtěl úmyslně někoho zmást
Zajímá mě teda ze všeho nejvíc vysvětlení, proč tato funkce není "inkarnace tohoto konceptu".
protože funkce, která "liftuje" vypadá takhle a -> m a nebo (a -> b) -> (m a -> m b), druhý argument bindu je a -> m b, typy nalevo se prostě opakují napravo (to není definice, ale jedna vlastnost liftu)
			 
			
			- 
				
protože funkce, která "liftuje" vypadá takhle a -> m a nebo (a -> b) -> (m a -> m b), druhý argument bindu je a -> m b, typy nalevo se prostě opakují napravo (to není definice, ale jedna vlastnost liftu)
Nehrňme se zase do nestrukturované diskuse, já si počkám na ten popis "inkarnace stejného konceptu".
			 
			
			- 
				
protože funkce, která "liftuje" vypadá takhle a -> m a nebo (a -> b) -> (m a -> m b), druhý argument bindu je a -> m b, typy nalevo se prostě opakují napravo (to není definice, ale jedna vlastnost liftu)
Nehrňme se zase do nestrukturované diskuse, já si počkám na ten popis "inkarnace stejného konceptu".
co nechápete na (a -> m a) proti (a -> m b)?
			 
			
			- 
				
co nechápete na (a -> m a) proti (a -> m b)?
Neřekl jsem, že to nechápu. Řekl jsem, že si počkám na to pořádné vysvětlení.
			 
			
			- 
				
Jo a ještě bych samozřejmě taky potřeboval vysvětlit, jestli je nebo není "inkarnací stejného konceptu" ta definice liftu z Wiki https://en.wikipedia.org/wiki/Lift_(mathematics)
tímhle se zabývat nebudu (vždyť tam není ani jediná citace), Moggi a https://wiki.haskell.org/Lifting bohatě stačí
			 
			
			- 
				
Nedal, protoze dat nejde.
Mně to přišlo validní. Nicméně tohle mi připomíná našeho profesora z automatů, když jsme řešili regulární jazyky. "Není regulární proto, že neexistuje konečný automat, který ten jazyk akceptuje. A teď neexistuje jako opravdu neexistuje, nebo jej jen neumíte sestavit?" 
Čili pokud si jsi tak jistý a po ostatních vyžaduješ přesné definice, tak by se to možná lépe vyřešilo, kdybys toto velmi silné tvrzení podložil matematickým důkazem. :) (a to nerýpu, jen poukazuji opět na tu nevyrovnanost diskuse... problém je, že se tady nebavíme o malé násobilce... :) )
Na zadnou definici zadny odkaz nikdo nedal. Placnout jenom tak do vetru odkaz https://wiki.haskell.org/Lifting neni zadne podani definice. Uz proto, ze uz z prvniho letmeho pohledu na tu stranku je jasne, ze jsou tam popsany ctyri ruzna (!!!!) pouziti toho pojmu. Jiste, vsechna ta pouziti maji neco spolecneho, ale o tom to prave je - kdyby panove diskutovali korektne, museli by minimalne nejak verohodne ukazat, ze to moje pouziti toho pojmu je uplne jine nez tyhle ctyri.
Coz ovsem nemuzou, protoze to ... nejde.
To stejné. :) Možná bych si přečetl znova příspěvky od @Idris.
Nevim, co je na tom zcestneho. Pokud budu zidli rikat "stul" a nekdo me bude chtit opravit, ze to slovo pouzivam blbe, tak proste musi rict "Hele, Mirdo, slovo "stul" se pouziva pro predmety ktere ...".
...anebo se tomu muze tricet prispevku vyhybat a misto toho hyrit radami, abych si to dostudoval. Taky cesta.
Dokázat, že tvrzení je nesprávné ještě neimplikuje povinnost poskytnout tvrzení správné. Tedy jinak, pokud budu mít algoritmus na počítání XY a někdo bude tvrdit, že je korektní. Tak pokud mu toto tvrzení vyvrátím protipříkladem, tak jsme s tím hotovi. Nemám žádnou povinnost mu naopak vymyslet/zadefinovat/ukázat korektní algoritmus i s validním důkazem korektnosti. Což je to, o co se tu snažíš vůči ostatním (minimálně na mě to tak působí). A na tento způsob uvažování bych si opravdu dával pozor, protože vede opravdu špatným směrem.
Nerekl jsem, ze jsem neco vic. Rekl jsem, ze pro anonyma je jednodussi diskutovat nekorektne nez pro ne-anonyma. Napr. proto, ze kdyz tady ja urazim Cikadu pod svym jmenem, tak se mi taky muze zitra stat, ze mi nekdo zazvoni u dveri a da mi jednu poradnou do nosu. Protoze proste Cikada ma dva metry a desne ji bavi thai box.
Anonymovi tohle riziko nehrozi, muze si nadavat komu chce jak chce a nic z toho pro nej neplyne, zadnou zodpovednost za to neprijima.
Já neřekl, že jsi to řekl. Já napsal, ať se tak přestaneš chovat. Celé to stojí a padá na tom, že diskuze má být vedená slušně a tudíž toto by mělo být irelevantní řešit. Na stranu druhou svět není ideální. Každopádně nesouhlasím s tím, že z toho pro anonyma nic neplyne. Celé je to o tom, že pokud se někdo v diskuzi chová jako hovado, tak jeho názory/příspěvky přestanou být relevantní, protože se tak chová. Ano, může si pak založit nový profil, ale pak "začíná od začátku". Tedy i anonymům jde o jakýsi kredit. :) (viz takový javaman a jiní... prostě tyhle lidi nejde brát vážně, protože se chovali tak, jak se chovali...) 
Jinak Cikáda je ten Cikáda (inspirace Sapkowski), dva metry nemá a lidi nebije. ;) 
			 
			
			- 
				
tímhle se zabývat nebudu (vždyť tam není ani jediná citace), Moggi a https://wiki.haskell.org/Lifting bohatě stačí
No ale to se pak budete zabývat nějakým konkrétním použitím toho pojmu.
Pokud chcete tvrdit, že ten pojem používám špatně (tj. moje použití je v rozporu s nějakým územ), pak by bylo záhodno prozkoumat, jak se skutečně ten pojem používá v různých kontextech.
I pokud bysme došli k tomu, že jsem ten pojem použil jinak, než jak ho používá Moggi, tak nerozumím tomu, jak z toho plyne, že jsem ho použil špatně. Myslitelná je minimálně varianta, že jsem ho použil tak, jak ho definuje právě ta Wiki...
Ale jak chcete no. Ať napíšete cokoli, pokud to bude opravdu strukturované a korektní, tak to pořád bude posun oproti pustému "nerozumíte tomu, tak si to nastudujte".
			 
			
			- 
				
Myslitelná je minimálně varianta, že jsem ho použil tak, jak ho definuje právě ta Wiki...
prosím dokažte
			 
			
			- 
				
Čili pokud si jsi tak jistý a po ostatních vyžaduješ přesné definice, tak by se to možná lépe vyřešilo, kdybys toto velmi silné tvrzení podložil matematickým důkazem. :)
"v" tvrdí, že jsem nějaký pojem použil špatně. Já po něm chci, aby mi vysvětlil, proč si to myslí.
Co myslíš, že bych měl "matematicky dokazovat"? Já nemám potřebu nic dokazovat.
Dokázat, že tvrzení je nesprávné ještě neimplikuje povinnost poskytnout tvrzení správné.
Pokud tvrdím, že někdo používá nějaký pojem nesprávně, není jiný způsob, jak to dokázat, než přednést definici a dokázat, že to použití ji porušuje.
			 
			
			- 
				
prosím dokažte
Co mám dokázat? Že je to myslitená varianta?
			 
			
			- 
				
prosím dokažte
Co mám dokázat? Že je to myslitená varianta?
že vaše prapůvodní tvrzení je konzistentní s definicí z wikipedie, s Moggim a běžným mainstreamovým (dokumentace haskellích knihoven např.) použitím termínu lift není (a -> ma / a -> m b)
			 
			
			- 
				
Jo a ještě bych samozřejmě taky potřeboval vysvětlit, jestli je nebo není "inkarnací stejného konceptu" ta definice liftu z Wiki https://en.wikipedia.org/wiki/Lift_(mathematics)
tímhle se zabývat nebudu (vždyť tam není ani jediná citace), Moggi a https://wiki.haskell.org/Lifting bohatě stačí
 Ta stránka je o "liftu" v topologii, například křivek mezi prostory. Je to něco úplně jiného, než ten Moggiho koncept (jinými slovy, Prýmek sem jen hodil další irelevantní odkaz).
			 
			
			- 
				
že vaše prapůvodní tvrzení je konzistentní s definicí z wikipedie, s Moggim a běžným mainstreamovým (dokumentace haskellích knihoven např.) použitím termínu lift není (a -> ma / a -> m b)
Nic takového jsem (zatím) netvrdil, proto nevím, proč bych to měl dokazovat.
Nicméně teď jste na řadě vy. Než na nová témata se radši soustředťe na splnění slibu: "pokusím se popsat, proč to jsou čtyři různé inkarnace stejného konceptu".
			 
			
			- 
				
jinými slovy, Prýmek sem jen hodil další irelevantní odkaz
Když myslíte, tak jo no :)
			 
			
			- 
				
Anonymovi tohle riziko nehrozi, muze si nadavat komu chce
 Jediné nadávky jsi psal ty, navíc nevyprovokované (např. "onanista"), všichni ostatní psali věcně a bez urážek.
Já sice k Prýmkovi žádné zvláštní sympatie nechovám, a občas (často) je s ním těžké pořízení, ale začalo to tímto:
tak se k tomu ani nevyjadřujte a aspoň si nastudujte co je "lift"
Což je urážlivé, nevěcné, provokující a vůbec celkově blbé. Člověk, který tímto začne, si následující flamewar vysloveně zaslouží.
			 
			
			- 
				
Člověk, který tímto začne, si následující flamewar vysloveně zaslouží.
To nevím, ale rozhodně si zaslouží, aby bylo prověřeno, jak tomu on rozumí. Zatím se moc neukázal, tak uvidíme :)
			 
			
			- 
				
Což je urážlivé, nevěcné, provokující a vůbec celkově blbé. Člověk, který tímto začne, si následující flamewar vysloveně zaslouží.
fajn, však jsem to uznal, ale četl jste na co jsem reagoval? to "nechce se mi nad tím dumat ale stejně sem něco plácnu"
			 
			
			- 
				
fajn, však jsem to uznal, ale četl jste na co jsem reagoval? to "nechce se mi nad tím dumat ale stejně sem něco plácnu"
pokusím se popsat, proč to jsou čtyři různé inkarnace stejného konceptu (Moggi, viz výše), ale možná až večer
Jak jste s tím daleko?
			 
			
			- 
				
Jak jste s tím daleko?
toto píše programátor, ne matematik, připomínky vítány
lift je operace která umožňuje aplikovat původní funkci v novém prostředí
resp. aplikace funkce je řízena vnitřnostma (např.) monády
funkce která něco liftuje má zhruba tento tvar:
lift :: (t0 -> ... -> tn -> y) -> g t0 ... tn y
typy vlevo se liftem neztratí a opakují se napravo
a má se chovat se tak že:
lift (f (a0..an)) == (lift f) (lift a0) .. (lift an)
(Moggi, haddocky)
to jest liftnutá hodnota funkce aplikované na argumenty je stejná jako výsledek aplikace liftnuté funkce na liftnuté argumenty
např.
increment x = x + 1
return (increment 2) == (fmap increment) (return 2)
			 
			
			- 
				
aplikace funkce je řízena vnitřnostma
má zhruba tento tvar
typy vlevo se [...] opakují se napravo
liftnutá hodnota funkce aplikované na argumenty je stejná jako výsledek aplikace liftnuté funkce na liftnuté argumenty
Počkat, tohle opravdu myslíte vážně?!
			 
			
			- 
				ještě proč druhý argument bindu není vždycky lift: jeho typ je a -> m b takže přinejmenším nesplňuje podmínku, že typy liftované funkce (zde nulární, jakkoliv tu myšlenku nemám rád) se opakují v typu do kterého měla být funkce liftnuta
			
 
			
			- 
				
ještě proč druhý argument bindu není vždycky lift: jeho typ je a -> m b takže přinejmenším nesplňuje podmínku, že typy liftované funkce (zde nulární, jakkoliv tu myšlenku nemám rád) se opakují v typu do kterého měla být funkce liftnuta
Ne, to je v poho, já bych to v tomhle duchu už nevylepšoval.
Ještě jednou se zeptám, tohle fakt myslíte vážně?
To je opravdu vážně míněná otázka: tohle je definice, kterou považujete za nejlepší, jakou jste ochoten/schopen napsat, nebo to je taková pracovní verze a ještě si chcete vzít čas a trochu se nad tím víc zamyslet?
			 
			
			- 
				
ještě proč druhý argument bindu není vždycky lift: jeho typ je a -> m b takže přinejmenším nesplňuje podmínku, že typy liftované funkce (zde nulární, jakkoliv tu myšlenku nemám rád) se opakují v typu do kterého měla být funkce liftnuta
"function lifting for dummies (with working knowledge of haskell)", technicky Moggi89
			 
			
			- 
				
"function lifting for dummies (with working knowledge of haskell)", technicky Moggi89
Dobře, tak ještě jinak: máte ještě vůbec zájem o nějakou diskusi? Položil jsem nějaké otázky, nevím, jestli mám čekat na odpověď nebo si radši jít rovnou užívat zaslouženého odpočinku, protože diskuse z vaší strany skončila monologem...
			 
			
			- 
				
"function lifting for dummies (with working knowledge of haskell)", technicky Moggi89
Dobře, tak ještě jinak: máte ještě vůbec zájem o nějakou diskusi? Položil jsem nějaké otázky, nevím, jestli mám čekat na odpověď nebo si radši jít rovnou užívat zaslouženého odpočinku, protože diskuse z vaší strany skončila monologem...
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
			 
			
			- 
				
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
Ano, měl jsem dotaz, jestli tohle opravdu chcete předložit k diskusi, nebo ještě chcete trochu času na vylepšení.
			 
			
			- 
				
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
Ano, měl jsem dotaz, jestli tohle opravdu chcete předložit k diskusi, nebo ještě chcete trochu času na vylepšení.
hned na prvním řádku: "připomínky vítány"
pravda, autorský záměr jsem osvětlil později
			 
			
			- 
				
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.
			 
			
			- 
				
"function lifting for dummies (with working knowledge of haskell)", technicky Moggi89
Dobře, tak ještě jinak: máte ještě vůbec zájem o nějakou diskusi? Položil jsem nějaké otázky, nevím, jestli mám čekat na odpověď nebo si radši jít rovnou užívat zaslouženého odpočinku, protože diskuse z vaší strany skončila monologem...
Prosím tě, zkrať to. Prostě řekni, co se ti na tom nelíbí, ať neplejtváme bajty.
			 
			
			- 
				
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.
			 
			
			- 
				
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.
No, posledních sedum stránek neděláte nic jiného.
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.
Mě třeba baví dumat nad tím, že Maybe je monáda, Promise je monáda, endofunktor je nóbl výraz pro funkce. A teď to nějak spolu souvisí. Taky se mi líbilo "lift je operace která umožňuje aplikovat původní funkci v novém prostředí". To je inspirativní.
Češi jsou strašně hádavej národ.
			 
			
			- 
				
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í.
			 
			
			- 
				
"lift je operace která umožňuje aplikovat původní funkci v novém prostředí"
taky se mi to líbí, hned když jsem si to přečetl (https://wiki.haskell.org/Lifting) jsem věděl, že to chci vykrást
			 
			
			- 
				
endofunktor je nóbl výraz pro funkce
Není.
To mi vůbec neva.
			 
			
			- 
				
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 ;)
			 
			
			- 
				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ů...
			 
			
			- 
				
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í.
			 
			
			- 
				
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):
A to já si to počtu rád, je-li co.
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é.
Hezký.
Bezpečně chápu Promise a Maybe, hůř jsem na tom s IO. Takže to všechno prohodím, a budu uvažovat:
Mám funkci, která načte číslo ze souboru, pokud je sudé tak něco s tím spočte, pokud liché, něco jiného, a pak tu hodnotu zapíše zpět do souboru. A to celé třikrát, ať to pěkně vynikne.
Jsem v té funkci. Jeden kontext. Když chci načítat ze souboru, tak to nejde, protože soubor nepatří do mého "světa", nejde předat argumentem (tak čtení by snad na humpoláka šlo, 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í.
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 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.
 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  ::)
			 
			
			- 
				
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, až 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š.
			 
			
			- 
				
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 :)
Ano, to je mi samozřejmě jasné. Však to tak i píšu.
, 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, až 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íš.
Ano. Takže to chápu dobře. Potvrdil jsi mou představu.
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š.
Však. Proto píšu, že ta monáda je "recepis".
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 :-)
			 
			
			- 
				
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?
			 
			
			- 
				
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 :)
			 
			
			- 
				
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?
			 
			
			- 
				
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 :)
Zatím si ten obecný koncept představuju jako ten "recepis". Mám-li Maybe monádu, tak její smysl je v tom, aby když mi ntá zanořená funkce vrátí Nothing se na nic nečekalo a seskákalo se dolu. Což ale nedělá ta monáda sama ale obsluha kolem. Když mám IO monádu, tak když mi vrátí "chci soubor", tak obsluha musí sehnat soubor. A v tomto případě obsluha tak nějak musí být runtime.
Nejsem si jist, zda tato představa je už konečně ta monáda, nebo jen podmnožina jejího užití.
			 
			
			- 
				
No a ono se snad nemůže C rovnat F(C)? Nebo s čím máš problém?
 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.
			 
			
			- 
				
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 :)
			 
			
			- 
				
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á.
			 
			
			- 
				
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
Ano, měl jsem dotaz, jestli tohle opravdu chcete předložit k diskusi, nebo ještě chcete trochu času na vylepšení.
hned na prvním řádku: "připomínky vítány"
 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.
			 
			
			- 
				
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) :)
Už zase? Mirku, Mirku... :-P
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 :)
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/ . 
			 
			
			- 
				
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 :)
			 
			
			- 
				
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 :)
			 
			
			- 
				
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 :)
Jo, tím jsem si už prošel. Já teď spíš potřebuju udělat syntézu.
			 
			
			- 
				
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á.
 Tohle fakt nemá smysl, je-li C kategorie, tak F(C) nedává smysl a i kdyby, tak F nemůže být funktor. To už nerozmotáš, chce to začít hezky od začátku a ujasnit si, co je kategorie, co funkce, co funktor a jaké jsou mezi nimi vztahy. To míním dobře, jen fakt nechci skončit čtením textu na úrovni blábolu popsaného zde https://www.nationalreview.com/2017/05/quantum-physics-oppressive-marginalized-people/ (doporučuji přečíst aspoň první dva odstavce), k čemuž ta diskuse bohužel konverguje.
			 
			
			- 
				
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ý :)
			 
			
			- 
				
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ý :)
OK, díky za tip.
			 
			
			- 
				
Tohle fakt nemá smysl, je-li C kategorie, tak F(C) nedává smysl a i kdyby, tak F nemůže být funktor.
Fakt tě nechápu.
Let C and D be categories. A functor F from C to D is a mapping that
* associates to each object X in C an object F(X) in D
* associates to each morphism  f: X -> Y in C a morphism F(f): F(X) -> F(Y)
zapisuje se F: C -> D
Vadí ti přesně co? Ten zápis F(C)? Tak sorry, to se asi nepoužívá, no, ok. Jak jsem to měl zapsat? "D takové, že F: C -> D"? To jsi tomu vážně nerozuměl, nebo to je jenom taková zbojovština?
			 
			
			- 
				
Jak jsem to měl zapsat? 
 To netuším, nevím totiž, co chceš říct.
			 
			
			- 
				
To netuším, nevím totiž, co chceš říct.
D
			 
			
			- 
				Ale už dobrou, zboji.
Je to škoda, že u tebe není poznat, co myslíš jako vážnou výhradu a kdy jenom zbojuješ, kdyby to tak nebylo, mohlo z tebe mít lidstvo větší užitek.
Ale i tak tě mám rád, seš takovej pičus urejpanej, jak si na to člověk zvykne, začne to být sympatický.
			 
			
			- 
				
To jsi tomu vážně nerozuměl
 Jak říkal v, jestli to čte někdo, kdo se to chce naučit, tak ty ho dokonale mateš.
			 
			
			- 
				
Jak říkal v, jestli to čte někdo, kdo se to chce naučit, tak ty ho dokonale mateš.
No, víš, on mě nikdo neplatí za to, abych se učil CT. Pokud na něco takovýho najdu čas hodinu za pár měsíců, je to výjimka. Mám spoustu jiných věcí, který mě zajímají víc a dám jim přednost. Detaily typu co se jak zapisuje se pak bohužel dost často z hlavy vypaří. A stejně tak si občas člověk neuvědomí, že někde něco platí a tímpádem něco jinýho někde na druhým konci nejde...
Mně (a všem ostatním, co by byli potenciálně rádi, kdyby jim aspoň něco z toho v hlavě zůstalo) by především víc pomohlo, kdybys míň rejpal a machroval a víc konstruktivně pomohl - třeba se zeptal "hele, tomuhle zápisu nerozumím, co jsi jim chtěl říct?"
Každopádně se ale shodnem, že pokud má někdo v plánu se naučit CT, rozhodně by se to neměl učit z mých pindů tady. Myslíš, že by pomohlo, kdybych si to dal do disclaimeru pod každej příspěvek? ;)
			 
			
			- 
				
Detaily typu co se jak zapisuje se pak bohužel dost často z hlavy vypaří. A stejně tak si občas člověk neuvědomí, že někde něco platí a tímpádem něco jinýho někde na druhým konci nejde...
 To je normální a nikoho to irituje. Ale evidentně už hezkou řádku místních irituje (podle toho, co tu psali), když někdo trvá na nějaké své evidentní chybě a ještě k tomu s arogancí a urážkami à la Ovčáček. Myslím, že v byl dostatečně vstřícný a věcný (a obětavý, čas je drahý) a zcela určitě by se tak chovali i ostatní, nebýt provokací.
P.S. A když někdo napíše, že něco nedává smysl, není to rejpání. A když někdo upozorní, že se píše laziness, není grammar nazi. Naopak se snaží pomoci. To by jinak byl grammar nazi každý spell checker.
			 
			
			- 
				
Myslím, že v byl dostatečně vstřícný a věcný (a obětavý, čas je drahý) a zcela určitě by se tak chovali i ostatní, nebýt provokací.
Ne, nebyl. "v" se zachoval jako namachrovanej pičus a to, co tady předvedl s tou rádobydefinicí jenom dokazuje, že na to nemá sebemenší právo. Tobě právo chovat se jako namachrovanej pičus přiznávám, ty na to aspoň máš. Příjemný to ani tak není, ale člověk se to naučí ignorovat.
"v" dostal, co si zasloužil: divadýlko.
A když někdo napíše, že něco nedává smysl, není to rejpání.
Ale ano, je. Protože kdyby se opravdu snažil pomoci, tak by nenapsal "tohle nedává smysl, nastuduj si to" (což samozřejmě adresát dešifruje jako "seš nýmand, nehodlám s tebou zahazovat svůj majestát"), ale třeba právě to zmíněný "tomuhle nerozumím, taková notace se nepoužívá" (což dešifruje jako "rád bych ti pomohl, ale nerozumím tomu, co se snažíš říct").
Ok, laziness beru na vědomí, ale udržím to tak dvě minuty myslím :)
			 
			
			- 
				...a už fakt ale musím na kutě, dobrou :)
			
 
			
			- 
				
Myslím, že v byl dostatečně vstřícný a věcný (a obětavý, čas je drahý) a zcela určitě by se tak chovali i ostatní, nebýt provokací.
Ne, nebyl. "v" se zachoval jako namachrovanej pičus a to, co tady předvedl s tou rádobydefinicí jenom dokazuje, že na to nemá sebemenší právo. 
 Proč hned další urážení? Asi každý myslíme jiného v. Ta definice byla věcně v pořádku. Jinak nerozumím některým narážkám. Možná protože už je tak pozdě. Nebo mi něco uniklo. 
			 
			
			- 
				
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
Ano, měl jsem dotaz, jestli tohle opravdu chcete předložit k diskusi, nebo ještě chcete trochu času na vylepšení.
hned na prvním řádku: "připomínky vítány"
 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.
dík za připomínku, ale nechci tady šermovat teorií kategorií, nejsem matematik, ten pojem IMHO ani formální definici nepotřebuje, aby se dal normálně použít v diskuzi mezi programátory, takže to lift (f a) == lift f (lift a) se mi zdá v neformálním prostředí dostačující
			 
			
			- 
				Asi jsem úžasný blbec, z nějakého důvodu jsem se rozhodl mrhat svým časem, prozkoumat historii diskuze a odhalit nějaký bod, na kterém bych obnažil, proč je v diskuzích, kde se vyskytuje Prýmek, tak často tolik urážlivé hlušiny a tak málo informací. Myslím, že i on by se nad tím měl hluboce zamyslet, neprospívá to nikomu kromě jeho ješitnosti.
Podle mě je pěkná ukázka toto: Prýmek píše:
bind (EDIT: respektive ta funkce, která je jeho druhým parametrem) musí liftovat "obyčejnou" hodnotu do monády, to je jeho význam.
O něco dál Idris odpovídá:
Ta formulace je špatně v tom, že ona funkce nějakou “obyčejnou” hodnotu liftovat může, ale nemusí. 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.”
To je podle mě velice podstatná připomínka. Není to ani tak o definici liftu, ale o tom, že výsledná hodnota funkce v bindu NEMUSÍ vzniknout liftováním parametru, zatímco Prýmek píše že MUSÍ, je to spíš o vlastnostech bindu. Snad ještě jednodušší případ než seznamy je obyčejné a přitom velice užitečné a názorné Maybe, kdy z bindu můžu vrátit None, které prostě liftováním nevzniká.
Pro začátečníka, který se teprve pokouší monádám rozumět, přebírá si význam každého slova, spojuje si v mozku informace z různých zdrojů a hledá aha momenty je tohle velice cenná informace, která pochopení bindu může dost napomoci.
Prýmek rád předepisuje ostatním, jak měli správně zachovat v nějaké situaci, teď já zkusím předepsat jemu, jak si představuji odpověď, která by podle mě diskuzi pomohla: Třeba takhle
"Jo to máš pravdu, díky za připomenutí/doplnění. Já chtěl v příkladu hlavně ukázat, že ta bindovská funkce musí brát jako parametr obyčejnou hodnotu a vracet monadickou, ale je fakt, že ta monadická nemusí (a i v užitečných případech často nevzniká) liftováním té obyčejné"
A teď se můžeme podívat, co odpověděl Prýmek:
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.
Smajlíci "oči v sloup", hádání se o významy, ironie, nekonstruktivní. Tenhle přístup je podle mě to, co dělá diskuze s Prýmkem tak nasírací. Důsledek? Šest dalších stránek s příspěvky v podobném tónu, stránek spíš hádek než diskuze. Proč? Nevím.
			 
			
			- 
				
ale nechci tady šermovat teorií kategorií
Ale vždyť přesně to jsi dělal:
že vaše prapůvodní tvrzení je konzistentní [...] s Moggim
Navíc pokud máš ambici definovat ten koncept liftu obecně, tak to těžko můžeš dělat pomocí Haskellu. Možná se pletu, ale mám za to, že ten liftA, liftM, lift... je tam zvlášť právě proto, že tam obecný lift (pro cokoli, kde bysme si ho uměli představit) nadefinovat nejde.
(A to ještě pomíjím to, že to slovo jako takové má opravdu různý význam v různých kontextech, žádná "obecná definice" prostě není)
, nejsem matematik, ten pojem IMHO ani formální definici nepotřebuje, aby se dal normálně použít v diskuzi mezi programátory, takže to lift (f a) == lift f (lift a) se mi zdá v neformálním prostředí dostačující
Hele, já respektuju tvoji erudici v Haskellu. Když budu dumat nad tím, jak by se tam něco udělalo, nebo jak je v Haskellu zvykem něco dělat, budu moc rád, když mi to budeš ochotný vysvětlit - a budu poslouchat jak žáček ve škole.
Problém ale je, že chceš, jak říkáš, pomoct rozšířit FP, a přitom se chováš z poloviny jako haskellový fachidiot ("tak, jak je to v Haskellu, tak je to jedině správně") a z druhé poloviny využíváš znalost Haskellu k tomu, abys jím mlátil lidi po hlavě.
Mám za to, že jeden z hlavních důvodů, proč se Haskell nerozšířil, jsou přesně takhle se chovající lidi: programují v tom pět let, cítí se jako kněží desátého zasvěcení ezoterního spolku supermanů a kdokoli má nižší zasvěcení, pro toho mají jenom "tak si to nastuduj, ať taky dosáhneš stejnýho zasvěcení".
Lidi, kteří něčemu opravdu dobře rozumí, se obvykle poznají podle toho, že s tím nedělají vědu a dokážou to vysvětlit tak, aby to druhý pochopil.
-------
No nic, můžem to snad uzavřít a chovat se dál jako lidi :) Měl bych tady takový dva náměty k diskusi:
1. na téma "když je něco nějak v Haskellu, tak to neznamená, že to tak je jedině správně":
Tohle mě zaujalo: https://stackoverflow.com/questions/24856963/how-does-lifting-in-a-functional-programming-context-relate-to-category-theory
2. návrat k původnímu tématu:
Nebavili jsme se o Haskellu. Bavili jsme se o PHP. Jak by podle tebe vypadal lift v PHP - tj. v rámci toho příkladu, ke kterýmu jsem se vyjadřoval?
			 
			
			- 
				
To je podle mě velice podstatná připomínka. Není to ani tak o definici liftu, ale o tom, že výsledná hodnota funkce v bindu NEMUSÍ vzniknout liftováním parametru
Všichni vycházíte ze stejného předpokladu: že slovem "liftovat" musíme myslet "použít funkci lift".
Já jsem to slovo myslel čistě analogicky, neformálně, jako "posunout se z roviny normálních hodnot do roviny monád", žádnou funkci lift jsem neměl na mysli. A zjevně to nebylo moc šikovný, což nemám problém uznat:
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.
Jo, asi jsem to slovo neměl takhle použít, někoho to zjevně může zmást. A nehádal bych se o to, kdyby nenastoupil "v" s tak sebejistým tónem, za který si zasloužil dostat lekci.
Bohužel, neznám žádné lepší slovo pro funkci "z jednoho světa do jiného". Ty nějaký znáš?
			 
			
			- 
				
1. na téma "když je něco nějak v Haskellu, tak to neznamená, že to tak je jedině správně":
Tohle mě zaujalo: https://stackoverflow.com/questions/24856963/how-does-lifting-in-a-functional-programming-context-relate-to-category-theory
Anebo míň ezoterický téma:
Na té stránce o liftingu mě zaujalo:
In principle, Applicative should be a superclass of Monad, but chronologically Functor and Monad were before Applicative. Unfortunately, inserting Applicative between Functor and Monad in the subclass hierarchy would break a lot of existing code and thus has not been done as of today (2011). This is still true as of Jan 2013.
https://wiki.haskell.org/Lifting
Když se podívám na http://hackage.haskell.org/package/base-4.11.0.0/docs/Control-Monad.html tak je tam 
class Applicative m => Monad m where
- takže to už opravili? Nebo jsem nechytl, o co tam jde?
			 
			
			- 
				
Jo, asi jsem to slovo neměl takhle použít, někoho to zjevně může zmást. A nehádal bych se o to, kdyby nenastoupil "v" s tak sebejistým tónem, za který si zasloužil dostat lekci.
Teď si uvědomuju že možná nevidíš jednu věc - třeba z mého pohledu jsi "v" žádnou lekci neudělil, naopak většinou svých příspěvků shazuješ sama sebe, a to především lidsky. Myslím že tu nejsem sám, kdo to takhle vidí, i když o tom asi žádné hlasování neproběhlo. To, že si myslíš, že jsi "v" nějak vytrestal, je jen tvoje do sebe zahleděná ješitnost.
			 
			
			- 
				
Teď si uvědomuju že možná nevidíš jednu věc - třeba z mého pohledu jsi "v" žádnou lekci neudělil, 
Na to máš samozřejmě právo a je to tvoje věc. Mě zajímalo, jestli tomu "v" opravdu tak dobře rozumí, že má právo machrovat, a ověřil jsem si, že ne. Jestli to ty vidíš, nebo ne, to už je jiná věc.
Mimochodem, "v" vycházel z toho (a koukám, že ty to tak asi taky chápeš), že jediný správný význam slova "lifting" je to, co je v Haskellu jako funkce liftXXX. Pokud ale správně rozumím tomuhle  https://stackoverflow.com/questions/24856963/how-does-lifting-in-a-functional-programming-context-relate-to-category-theory tak to, co je v Haskellu jako "lift" vůbec není to, čemu se "lift" říká v CT. Tak trochu je to dokonce "opačná věc" :)
Ten lift z téhle SO stránky mi přijde přesně odpovídat liftu ze stránky na wiki, kterou jsem odkazoval: https://en.wikipedia.org/wiki/Lift_(mathematics)
Není mi teda moc jasné, proč se vlastně v Haskellu zažil ten "lift" jako něco jinýho. Nebo to možná je to stejný, akorát je potřeba tu kategorii nadefinovat nějak jinak? Nevím, ale zdá se mi to nepravděpodobný. Tady by mohl pomoct Idris, kdyby se mu chtělo chvilku taky psát srozumitelně a vstřícně :)
...no takže minimálně z tohodle je jasný, že žádný jednotný význam pojmu "lifting" není.
			 
			
			- 
				
Asi jsem úžasný blbec, z nějakého důvodu jsem se rozhodl mrhat svým časem, prozkoumat historii diskuze a odhalit nějaký bod, na kterém bych obnažil, proč je v diskuzích, kde se vyskytuje Prýmek, tak často tolik urážlivé hlušiny a tak málo informací. Myslím, že i on by se nad tím měl hluboce zamyslet, neprospívá to nikomu kromě jeho ješitnosti.
Podle mě je pěkná ukázka toto: Prýmek píše:
bind (EDIT: respektive ta funkce, která je jeho druhým parametrem) musí liftovat "obyčejnou" hodnotu do monády, to je jeho význam.
O něco dál Idris odpovídá:
Ta formulace je špatně v tom, že ona funkce nějakou “obyčejnou” hodnotu liftovat může, ale nemusí. 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.”
To je podle mě velice podstatná připomínka. Není to ani tak o definici liftu, ale o tom, že výsledná hodnota funkce v bindu NEMUSÍ vzniknout liftováním parametru, zatímco Prýmek píše že MUSÍ, je to spíš o vlastnostech bindu. Snad ještě jednodušší případ než seznamy je obyčejné a přitom velice užitečné a názorné Maybe, kdy z bindu můžu vrátit None, které prostě liftováním nevzniká.
Pro začátečníka, který se teprve pokouší monádám rozumět, přebírá si význam každého slova, spojuje si v mozku informace z různých zdrojů a hledá aha momenty je tohle velice cenná informace, která pochopení bindu může dost napomoci.
Prýmek rád předepisuje ostatním, jak měli správně zachovat v nějaké situaci, teď já zkusím předepsat jemu, jak si představuji odpověď, která by podle mě diskuzi pomohla: Třeba takhle
"Jo to máš pravdu, díky za připomenutí/doplnění. Já chtěl v příkladu hlavně ukázat, že ta bindovská funkce musí brát jako parametr obyčejnou hodnotu a vracet monadickou, ale je fakt, že ta monadická nemusí (a i v užitečných případech často nevzniká) liftováním té obyčejné"
A teď se můžeme podívat, co odpověděl Prýmek:
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.
Smajlíci "oči v sloup", hádání se o významy, ironie, nekonstruktivní. Tenhle přístup je podle mě to, co dělá diskuze s Prýmkem tak nasírací. Důsledek? Šest dalších stránek s příspěvky v podobném tónu, stránek spíš hádek než diskuze. Proč? Nevím.
Díky, žes mi ušetřil čas a já se nemusel zase zapojovat. Problém je že to dělá vždycky a všude a mě už to prostě nebaví.
			 
			
			- 
				
Jo, asi jsem to slovo neměl takhle použít, někoho to zjevně může zmást. A nehádal bych se o to, kdyby nenastoupil "v" s tak sebejistým tónem, za který si zasloužil dostat lekci.
Teď si uvědomuju že možná nevidíš jednu věc - třeba z mého pohledu jsi "v" žádnou lekci neudělil, naopak většinou svých příspěvků shazuješ sama sebe, a to především lidsky. Myslím že tu nejsem sám, kdo to takhle vidí, i když o tom asi žádné hlasování neproběhlo. To, že si myslíš, že jsi "v" nějak vytrestal, je jen tvoje do sebe zahleděná ješitnost.
+ 1 :) 
Teď si uvědomuju že možná nevidíš jednu věc - třeba z mého pohledu jsi "v" žádnou lekci neudělil, 
Na to máš samozřejmě právo a je to tvoje věc. Mě zajímalo, jestli tomu "v" opravdu tak dobře rozumí, že má právo machrovat, a ověřil jsem si, že ne. Jestli to ty vidíš, nebo ne, to už je jiná věc.
Mimochodem, "v" vycházel z toho (a koukám, že ty to tak asi taky chápeš), že jediný správný význam slova "lifting" je to, co je v Haskellu jako funkce liftXXX. Pokud ale správně rozumím tomuhle  https://stackoverflow.com/questions/24856963/how-does-lifting-in-a-functional-programming-context-relate-to-category-theory tak to, co je v Haskellu jako "lift" vůbec není to, čemu se "lift" říká v CT. Tak trochu je to dokonce "opačná věc" :)
Ten lift z téhle SO stránky mi přijde přesně odpovídat liftu ze stránky na wiki, kterou jsem odkazoval: https://en.wikipedia.org/wiki/Lift_(mathematics)
Není mi teda moc jasné, proč se vlastně v Haskellu zažil ten "lift" jako něco jinýho. Nebo to možná je to stejný, akorát je potřeba tu kategorii nadefinovat nějak jinak? Nevím, ale zdá se mi to nepravděpodobný. Tady by mohl pomoct Idris, kdyby se mu chtělo chvilku taky psát srozumitelně a vstřícně :)
...no takže minimálně z tohodle je jasný, že žádný jednotný význam pojmu "lifting" není.
Možná trošku ubrat na ješitnosti. Ne všichni mají potřebu machrovat. Proč se každá diskuze s tebou musí zvrhnout na poměřování....
Hlavně je vtipné, že chvíli se oháníš Haskellem, chvíli CT, podle toho, jak se ti to hodí.
Jinak ano, dneska v Haskellu, pokud chceš zadefinovat instance Monad, potřebuješ Functor a Applicative. :) 
			 
			
			- 
				
Díky, žes mi ušetřil čas a já se nemusel zase zapojovat. Problém je že to dělá vždycky a všude a mě už to prostě nebaví.
Hm, tak to mě mrzí, že ani ty nevidíš, že to "zatímco Prýmek píše že MUSÍ" není pravda a kdyby Idris četl, co jsem psal, tak by mu to mělo dojít. Jestliže si ošoupávám klávesnici s dlouhým vysvětlením, že jsem něco netvrdil, a o pár příspěvků nastoupí někdo s tím, že zase zkonstatuje, že jsem to tvrdil (a vyvrací mi to), tak prostě už není jak reagovat, než dát oči v sloup.
Možná trošku ubrat na ješitnosti. Ne všichni mají potřebu machrovat. Proč se každá diskuze s tebou musí zvrhnout na poměřování....
Sorry, ale tomuhle vážně při nejlepší vůli nerozumím. Podívej se, byl to v, kdo do diskuse nastoupil (dost zvostra) s tím, že já nemám pravdu. A jediný, co jsem po něm celou dobu chtěl, bylo, aby mi tohle svoje tvrzení dokázal. Když se cítíš, tak ok, ukaž se.
Já jsem nic netvrdil, neměl žádnou alternativní svoji verzi, neříkal "v"-ovi, že jeho verze je blbě. Jenom jsem (záměrně) tvrdošijně trval na tom, aby si "v" svou pozici obhájil, když se cítí, že na to má.
Hlavně je vtipné, že chvíli se oháníš Haskellem, chvíli CT, podle toho, jak se ti to hodí.
Ne. Mám dojem, že v CT je pojem "lifting" chápaný jinak než v Haskellu. Což je rozpor s "v"-ovým tvrzením, že jediné správné použití toho termínu je to z Haskellu a kdokoli to použije jinak, je nedouk a měl by si to nastudovat.
Ještě jednou: já jsem NEtvrdil, že jakákoliv z těch definic je správná. To dělal "v".
Neotáčej smysl toho sporu a nepřenášej důkazní břemeno :)
			 
			
			- 
				Obávám se, že asi každý čteme jinou diskuzi. :) 
Neotáčej smysl toho sporu a nepřenášej důkazní břemeno :)
Já nevytrhávám sousloví z kontextu, nepřekrucuji cizí věty a stále čekám na tvůj důkaz, že "to nejde" (když už sem taháš matematiku, důkazy a přesné vyjadřování, se kterým, se vší úctou, máš problém - viz třeba strana 10).
Upřímně, fakt mě tato diskuze nebaví, ať už přijde kdo chce s čím chce, tak ho odpálkuješ, protože v Amazonii prší a existuje kobra delší než půl metru (*nadsázka*). Tak se bavit nedá.
-----------------------
Jinak pokud by někoho zaujal/zajímal Haskell, tak pokud neznáte, doporučuji - http://learnyouahaskell.com/ :)
			 
			
			- 
				
Obávám se, že asi každý čteme jinou diskuzi. :)
Taky mám ten dojem :)
Já nevytrhávám sousloví z kontextu, nepřekrucuji cizí věty 
Opakuju: nejsem si vědom toho, že bych to dělal. Pokud máš nějaký konkrétní příklad, budu rád, když mi ho ukážeš.
a stále čekám na tvůj důkaz, že "to nejde" (když už sem taháš matematiku, důkazy a přesné vyjadřování, se kterým, se vší úctou, máš problém - viz třeba strana 10).
No jestli ti to k něčemu je, můžu :)
Kontext: 
Dal ti protipříklad k tvému tvrzení. 
Nedal. To, ze k necemu napisu, ze to je protipriklad, z toho nedela protipriklad.
Nedal, protoze dat nejde.
Jak už jsem tady napsal asi milionkrát, použil jsem v neformální větě obrat "tato funkce liftuje hodnotu do monády". 
Neformální větu jde dost těžko nějak formálně vyvrátit. "v" nebo Idris by mě nejspíš museli prvně požádat, abych ji formuloval nějak formálně, a potom by mohli přijít s protipříkladem. Což neudělali, takže i kdyby se na hlavu postavili, tak jakýkoliv údajný "protipříklad" by byl irelevantní.
Nebo by mohli postupovat taky neformálně a mohli by argumentovat, že to slovo má jeden konkrétní všeobecně přijímaný význam a já jsem ho použil jinak. To by bylo ok, jenže jsem podal příklad, že se používá různě v různých kontextech. Takže taky no go...
Jiná cesta mě nenapadá, takže mám za to, že je to tím dokázáno. 
Upřímně, fakt mě tato diskuze nebaví, ať už přijde kdo chce s čím chce, tak ho odpálkuješ, protože v Amazonii prší a existuje kobra delší než půl metru (*nadsázka*). Tak se bavit nedá.
Pokud by to tak bylo, tak by pro něj bylo velmi jednoduché říct "fakt, že v Amazonii prší, je irelevantní pro otázku, jestli je legitimní říct, že ona funkce "liftuje"".
Nemůžu za to, že místo jasné strukturované argumentace se tady komunikuje stylem "douč se to".
			 
			
			- 
				
jestli jste měl nějaký věcný dotaz, tak jsem ho musel přehlídnout
Ano, měl jsem dotaz, jestli tohle opravdu chcete předložit k diskusi, nebo ještě chcete trochu času na vylepšení.
hned na prvním řádku: "připomínky vítány"
 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.
dík za připomínku, ale nechci tady šermovat teorií kategorií, nejsem matematik, ten pojem IMHO ani formální definici nepotřebuje, aby se dal normálně použít v diskuzi mezi programátory, takže to lift (f a) == lift f (lift a) se mi zdá v neformálním prostředí dostačující
 Ano, určitě je dostačující, to byl jen můj subjektivní názor, že by to bylo pro někoho názornější. Já taky nejsem matematik, ti by se nám tu asi vysmáli.
			 
			
			- 
				
dík za připomínku, ale nechci tady šermovat teorií kategorií, nejsem matematik, ten pojem IMHO ani formální definici nepotřebuje, aby se dal normálně použít v diskuzi mezi programátory, takže to lift (f a) == lift f (lift a) se mi zdá v neformálním prostředí dostačující
 Ano, určitě je dostačující
A vejde se do téhle definice https://wiki.haskell.org/Lifting#Arrow_lifting ?
Pokud budu mít funkci f: String -> Int, tak jak bude v tomhle případě vypadat to "lift a"? 
			 
			
			- 
				
Díky, žes mi ušetřil čas a já se nemusel zase zapojovat. Problém je že to dělá vždycky a všude a mě už to prostě nebaví.
Hm, tak to mě mrzí, že ani ty nevidíš, že to "zatímco Prýmek píše že MUSÍ" není pravda a kdyby Idris četl, co jsem psal, tak by mu to mělo dojít. 
Proboha ty jsi slepý? V jakém smyslu není pravda, že "Prýmek píše že MUSÍ"? Zkus si tu svoji větu číst ještě tolikrát, dokud si nevšimneš, že to tam píšeš, pro tvoje pohodlí ji sem vkládám... Kdyby to oči opravdu nezvládly, zkus grep -i.
bind (EDIT: respektive ta funkce, která je jeho druhým parametrem) musí liftovat "obyčejnou" hodnotu do monády, to je jeho význam. 
			 
			
			- 
				
Já jsem to slovo myslel čistě analogicky, neformálně, jako "posunout se z roviny normálních hodnot do roviny monád", žádnou funkci lift jsem neměl na mysli. A zjevně to nebylo moc šikovný, což nemám problém uznat
Mě přijde že s tím máš ohromný problém, strávil jsi spoustu stránek tím, že jsi se nás pokoušel přesvědčit, že jsi to použil zcela OK, a začal jsi to slovy (necituji, z hlavy: "Kdybyste nebyl pustý onanista"....)
			 
			
			- 
				
Jo, asi jsem to slovo neměl takhle použít, někoho to zjevně může zmást. A nehádal bych se o to, kdyby nenastoupil "v" s tak sebejistým tónem, za který si zasloužil dostat lekci.
Teď si uvědomuju že možná nevidíš jednu věc - třeba z mého pohledu jsi "v" žádnou lekci neudělil, naopak většinou svých příspěvků shazuješ sama sebe, a to především lidsky. Myslím že tu nejsem sám, kdo to takhle vidí
 Udělil takovou "lekci", jako když někdo s trabantem vybržďuje kamion :)
			 
			
			- 
				
V jakém smyslu není pravda, že "Prýmek píše že MUSÍ"?
V tom smyslu, že Prýmek o žádné "funkci lift" nemluvil. Což lze snadno nahlédnout tím, že Prýmek mluvil o PHP (resp. o obecném konceptu), kde žádná "funkce lift" ani není.
Asi stokrát bylo málo, tak po sto první: neformální slovo "liftovat" nemusí nutně ve všech kontextech znamenat "použít funkci lift, jak ji definuje Haskell"
 Zkus si tu svoji větu číst ještě tolikrát, dokud si nevšimneš
Zkus si tu diskusi přečíct ještě jednou, aniž bys do ní vkládal předpoklad "liftovat = použít lift z Haskellu".
Mohl bych se chovat jako ty a napsat Jsi slepý? Nevidíš, že v tom příspěvku je "liftovat" a ne "použít funkci lift"?. Neudělám to.
			 
			
			- 
				
V jakém smyslu není pravda, že "Prýmek píše že MUSÍ"?
V tom smyslu, že Prýmek o žádné "funkci lift" nemluvil. Což lze snadno nahlédnout tím, že Prýmek mluvil o PHP (resp. o obecném konceptu), kde žádná "funkce lift" ani není.
... ok, tuhle debatu vzdávám (jako už tolik jiných přede mnou tuto i jiné debaty s tebou). Mám poslední otázku, tak bych tě poprosil o trošičku tvého času. Když si znovu přečteš můj příspěvek (odkazuji níže), ve kterém uvádím odpověď, která by mi přišla plodná, a tvoji skutečnou odpověď.
Kdyby jsi mohl vrátit čas a dostal na výběr mezi těmito dvěma a mohl znovu odpovědět, vybral by jsi raději:
 1. Mojí nebo znovu tvojí odpověď?
 2. Kdyby jsi se rozhodoval hlavně na základě toho, co bude přínosné pro diskuzi, vybral by jsi mojí nebo tvojí odpověď?
Díky.
Klikni na "Citace" pro můj původní příspěvek:
			 
			
			- 
				
V jakém smyslu není pravda, že "Prýmek píše že MUSÍ"?
V tom smyslu, že Prýmek o žádné "funkci lift" nemluvil. Což lze snadno nahlédnout tím, že Prýmek mluvil o PHP (resp. o obecném konceptu), kde žádná "funkce lift" ani není.
Asi stokrát bylo málo, tak po sto první: neformální slovo "liftovat" nemusí nutně ve všech kontextech znamenat "použít funkci lift, jak ji definuje Haskell"
Tak zaprvé by mě zajímalo, co to je "neformální slovo". Zadruhé nikdo netvrdí, že to nutně ve všech kontextech znamená použít funkci lift, jak ji definuje Haskell, tak neodbíhej od jádra věci. Zatřetí 
(...) Prýmek mluvil o PHP (resp. o obecném konceptu), kde žádná "funkce lift" ani není.
je prostě wtf. :) 
			 
			
			- 
				
Tak zaprvé by mě zajímalo, co to je "neformální slovo". 
Slovo, které se používá v různých kontextech různě a neexistuje obecně přijímaná definice.
Zadruhé nikdo netvrdí, že to nutně ve všech kontextech znamená použít funkci lift, jak ji definuje Haskell
Pokud by to netvrdil, musel by mi přiznat právo to slovo použít v jiném (analogickém) smyslu. A nemohl by napsat např. tohle:
použil jste v českém textu anglické slovo, které má v daném kontextu velmi specifický význam (https://wiki.haskell.org/Lifting), kdybyste chtěl použít analogii, čekal bych české slovo
a bez toho předpokladu by ani nedával smysl tenhle příspěvek:
Ta formulace je špatně v tom, že ona funkce nějakou “obyčejnou” hodnotu liftovat může, ale nemusí. V obecném případě tato funkce vrací monádu
Pokud by zboj Idris byl ochotný akceptovat např. definici slovem "liftovat" myslíme jakýkoli přenos něčeho z nějaké úrovně do nějaké vyšší, nemohl by tohle napsat.
			 
			
			- 
				
Kdyby jsi mohl vrátit čas a dostal na výběr mezi těmito dvěma a mohl znovu odpovědět, vybral by jsi raději:
Sorry, odpovím trochu jinak:
Viz předchozí příspěvek.
Kdybych věděl, že zdejší lidi nejsou schopní se oprostit od myšlenky, že slovo "liftovat" musí nutně znamenat "použít lift z Haskellu" a jakékoliv jiné použití vyvolá flamewar, vůbec bych ten příspěvek nepsal. Protože to byl příspěvek neformální, předpokládající, že si lidi chtějí poklábosit a budou se snažit si porozumět. Což byl zjevně chybný předpoklad.
			 
			
			- 
				
jakýkoli přenos něčeho z nějaké úrovně do nějaké vyšší
Respektive raději "přechod", ať zase předejdeme zbojově upozornění, že se tam nic přenášet nemusí :)
			 
			
			- 
				
Tak zaprvé by mě zajímalo, co to je "neformální slovo". 
Slovo, které se používá v různých kontextech různě a neexistuje obecně přijímaná definice.
Tak například čeština takové slovo ani nemá, čili je to podobné jako neformální význam slova "befelemepeseveze".  :)
			 
			
			- 
				
Kdyby jsi mohl vrátit čas a dostal na výběr mezi těmito dvěma a mohl znovu odpovědět, vybral by jsi raději:
Sorry, odpovím trochu jinak:
Opravdu nechceš odpovědět 1 a/b a 2 a/b? Udělalo by mi to velkou radost, a pro tebe to snad není nic tak obtížného...
Ještě jednou předem díky..
			 
			
			- 
				
Opravdu nechceš odpovědět 1 a/b a 2 a/b?
Ne, nemám potřebu hrát nějaký rádobypsychohry.
			 
			
			- 
				
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á.
 Není problém, tady už to je vysvětlené: https://math.stackexchange.com/questions/142078/what-is-the-difference-between-functor-and-function
			 
			
			- 
				
Není problém, tady už to je vysvětlené: https://math.stackexchange.com/questions/142078/what-is-the-difference-between-functor-and-function
To je něco jinýho než co jsem myslel, ale ona ta otázka stejně asi nedává smysl, když jsem nad tím pak víc přemýšlel. Nechme to být. Spíš jestli máš chuť, tak tohle je daleko zajímavější:
https://forum.root.cz/index.php?topic=18107.msg261852#msg261852
			 
			
			- 
				
Není problém, tady už to je vysvětlené: https://math.stackexchange.com/questions/142078/what-is-the-difference-between-functor-and-function
To je něco jinýho než co jsem myslel
 Zase jsem nepochopil dotaz?
			 
			
			- 
				
Zase jsem nepochopil dotaz?
Ne, zase dotaz nejspíš nedával smysl, to je jedno.
			 
			
			- 
				
https://forum.root.cz/index.php?topic=18107.msg261852#msg261852
 A co s tím? Definice liftu v Haskellu je prostě jiná a nekonzistentní, po částech. Prostě to nepsali topologové a netušili, že už se ten pojem používá. Tak jak angličtí vidláci někde z Prickshire začali prvnímu červenému ptákovi, co v Americe viděli, říkat robin ignorujíce, že je dvakrát větší než červenka a řve úplně jinak. Takových víceznačností je všude plno a prostě záleží na kontextu. FP indikuje kontext Haskellu spíše než nějakou topologii. Kdybych byl matematik, nejspíš bych vysypal z rukávu ještě další věci, co se jmenují lift. Nemá smysl to řešit, tady nejde o nějaký “lift”, ale o kontext a pojmosloví.
			 
			
			- 
				
Zase jsem nepochopil dotaz?
Ne, zase dotaz nejspíš nedával smysl, to je jedno.
 Dával, když se na to ptají i jinde. Nejjednodušší asi je říct, že každá funkce je relace nad množinou, kdežto objekty kategorie můžou tvořit vlastní třídu. Alternativně že pojem funkce se používá výhradně v kategorii Set, tedy na jiné úrovni, kde je ekvivalentní morfismu. Jestli to stačí jako vysvětlení... (tohle mi plyne z toho odkazu a jiných, co jsem k tomu našel).
			 
			
			- 
				
Definice liftu v Haskellu je prostě jiná a nekonzistentní, po částech. Prostě to nepsali topologové a netušili, že už se ten pojem používá.
Proč pořád říkáš topologové? I ta wiki, i tenhle týpek o tom mluví jako o věci z CT. Topologie je na Wiki jenom jako příklad.
Nemá smysl to řešit, tady nejde o nějaký “lift”
Hm. Mně to přišlo, že tady o slovo lift, minimálně v-ovi, docela šlo...
			 
			
			- 
				
Definice liftu v Haskellu je prostě jiná a nekonzistentní, po částech. Prostě to nepsali topologové a netušili, že už se ten pojem používá.
Proč pořád říkáš topologové? 
 Ten pojem pochází z topologie (teorie homotopických křivek) a vznikl dávno před nějakou CT (stejně jako třeba komutativní diagramy). Ostatně celá slavná CT vznikla z topologie a všechny její základní koncepty jsou inspirované topologií. Až (o hodně) později se tak nějak zjistilo, že se dá použít i na jiné blbosti.
			 
			
			- 
				
Dával, když se na to ptají i jinde.
Viděl jsem právě dotazy na rozdíl mezi funkcí a funktorem, ale na tohle ne. Ale moc jsem to nehledal, jenom zběžně.
 Nejjednodušší asi je říct, že každá funkce je relace nad množinou, kdežto objekty kategorie můžou tvořit vlastní třídu. Alternativně že pojem funkce se používá výhradně v kategorii Set, tedy na jiné úrovni, kde je ekvivalentní morfismu. Jestli to stačí jako vysvětlení... (tohle mi plyne z toho odkazu a jiných, co jsem k tomu našel).
Jo, to dává smysl. Pokud mám funkce někde "uvnitř" té kategorie (např. ten Set), tak by nedávalo smysl mít stejný pojem i o úroveň výš.
Laicky bych to shrnul jako že by tam vznikl vlastně stejný problém jako s množinou všech množin. Tak si to asi pro svoje účely vysvětlit můžu, ne? :)
			 
			
			- 
				
Ten pojem pochází z topologie (teorie homotopických křivek) a vznikl dávno před nějakou CT (stejně jako třeba komutativní diagramy). Ostatně celá slavná CT vznikla z topologie a všechny její základní koncepty jsou inspirované topologií. Až (o hodně) později se tak nějak zjistilo, že se dá použít i na jiné blbosti.
Aha, ok. Já jsem myslel, že to bylo historicky naopak - že prvně byla CT a pak se zjistilo, že se bezvadně hodí topologům. Tak to je zajímavý, dík.
			 
			
			- 
				
Hm. Mně to přišlo, že tady o slovo lift, minimálně v-ovi, docela šlo...
 Stačilo říct lifruje místo liftuje.
			 
			
			- 
				
Stačilo říct lifruje místo liftuje.
No dyť :)
Že já debil jsem nenapsal "vezme tu hodnotu a zmikturuje ji frkodrťákem do monády", to by asi bylo srozumitelnější nebo co.
			 
			
			- 
				
Laicky bych to shrnul jako že by tam vznikl vlastně stejný problém jako s množinou všech množin. 
 Asi jo, až na to, že teď je problém s třídou všech tříd. Tohle je v CT haram, aby si nikdo nevšiml, že stojí na paradoxu, proto se místo "funkce" říká "family of objects/morphisms". 
			 
			
			- 
				
Ten pojem pochází z topologie (teorie homotopických křivek) a vznikl dávno před nějakou CT (stejně jako třeba komutativní diagramy). Ostatně celá slavná CT vznikla z topologie a všechny její základní koncepty jsou inspirované topologií. Až (o hodně) později se tak nějak zjistilo, že se dá použít i na jiné blbosti.
Já jsem myslel, že to bylo historicky naopak - že prvně byla CT a pak se zjistilo, že se bezvadně hodí topologům
 A jak by asi taková kravina (abstract nonsense) vznikla "z ničeho"?
			 
			
			- 
				
Asi jo, až na to, že teď je problém s třídou všech tříd. Tohle je v CT haram, aby si nikdo nevšiml, že stojí na paradoxu, proto se místo "funkce" říká "family of objects/morphisms".
Tohle mi vždycky přišlo divný, proč se pro další úroveň vymyslelo slovo "třída" a nevyřešilo se to prostě číslováním jako u Alef, beztak bylo jasný, že se na to zas někde narazí ;)
A jak by asi taková kravina (abstract nonsense) vznikla "z ničeho"?
Já to mám jako základní předpoklad, že jestli nějaká děsná zhovadilost jde vymyslet, tak buď s ní už nějaký matematik přišel, nebo brzo přijde :)
			 
			
			- 
				
Tohle mi vždycky přišlo divný, proč se pro další úroveň vymyslelo slovo "třída" a nevyřešilo se to prostě číslováním jako u Alef, beztak bylo jasný, že se na to zas někde narazí ;)
 Dyť takhle to vyřešil Russell už před 1. světovou válkou.
			 
			
			- 
				
Dyť takhle to vyřešil Russell už před 1. světovou válkou.
Nojo, já ty historický fáze vývoje neznám, s odřenýma ušima a značným odporem jsem matikou prolízal i tou "finální" a fakt neměl náladu si ještě číst o tom, jak vypadala mezistádia :)
Ale teď, když už mě zkoušky netrápí, bych si i nějaký ten detektivní románek třeba o té teorii množin možná i přečet, už to "není osobní" ;)
----
No nic, Idrisi, dneska jdu ale fakt spát brzo, dobrou.
			 
			
			- 
				
Já to mám jako základní předpoklad, že jestli nějaká děsná zhovadilost jde vymyslet, tak buď s ní už nějaký matematik přišel, nebo brzo přijde
 Teď vážně, tady všechno jen vzdáleně související s FP končí hatem, zkus místo vybržďování kamionů trabantem napsat regulérní článek (po domluvě s redakcí) rozebírající, proč je monáda monoid (psaním to pochopíš a hodně zoufalcům zvedneš sebevědomí, v češtině to myslím ještě vysvětlené není). v jistě rád pomůže.
			 
			
			- 
				
Teď vážně, tady všechno jen vzdáleně související s FP končí hatem, zkus místo vybržďování kamionů trabantem napsat regulérní článek (po domluvě s redakcí) rozebírající, proč je monáda monoid (psaním to pochopíš a hodně zoufalcům zvedneš sebevědomí, v češtině to myslím ještě vysvětlené není). v jistě rád pomůže.
Kamion to jistě napíše sám. Ještě by tam trabant nasekal věci, co by nedávaly smysl.
			 
			
			- 
				
Teď vážně, tady všechno jen vzdáleně související s FP končí hatem, zkus místo vybržďování kamionů trabantem napsat regulérní článek (po domluvě s redakcí) rozebírající, proč je monáda monoid (psaním to pochopíš a hodně zoufalcům zvedneš sebevědomí, v češtině to myslím ještě vysvětlené není). v jistě rád pomůže.
Kamion to jistě napíše sám. Ještě by tam trabant nasekal věci, co by nedávaly smysl.
 To nejde, to je ten přírodní zákon, že kdo už monády chápe, není schopen je vysvětlit těm, co je ještě nechápou. v to už zjevně zná. Logicky jediný okamžik, kdy to jde napsat srozumitelně, je právě během psaní, při kterém to člověk pochopí.
			 
			
			- 
				
To nejde, to je ten přírodní zákon, že kdo už monády chápe, není schopen je vysvětlit těm, co je ještě nechápou. v to už zjevně zná. Logicky jediný okamžik, kdy to jde napsat srozumitelně, je právě během psaní, při kterém to člověk pochopí.
To je nesmysl a nevím, proč se to pořád říká.
			 
			
			- 
				
To nejde, to je ten přírodní zákon, že kdo už monády chápe, není schopen je vysvětlit těm, co je ještě nechápou. v to už zjevně zná. Logicky jediný okamžik, kdy to jde napsat srozumitelně, je právě během psaní, při kterém to člověk pochopí.
To je nesmysl a nevím, proč se to pořád říká.
 Protože existuje už asi milion vysvětlení a studenti nechápou ani jedno?
			 
			
			- 
				
Protože existuje už asi milion vysvětlení a studenti nechápou ani jedno?
Nojo, jenže většina těch vysvětlení dělá tu samou chybu, že dostatečně důrazně nevysvětlí to, co tady pořád říkam: rozdíl mezi obecným konceptem a konkrétní monádou.
Ten obecnej koncept je prostě dost komplikovanej na to, aby ho část programátorů nepochopila. Tak to prostě je a nemá smysl se snažit vymyslet nějaký přirovnání k borůvkám s bláhovou představou, že borůvky pochopí každej.
Konkrétní monádu (třeba IO) ale pochopí každej, protože každej pochopí třeba ten Promise. Jenom se z toho nesmí dělat vědat. Třeba ten http://learnyouahaskell.com/ je dobrej, z toho to pochopí každej.
Od pochopení konkrétní monády k obecnýmu konceptu je pak už snadnější cesta. I když ji každej nedá no, tak co.
On ten Komenský věděl, proč radí jít od konkrétního k abstraktnímu. Ono to totiž funguje.
----
Ale už se fakt omlouvám...
			 
			
			- 
				Jo a mimochodem, kdyby něco takovýho bylo, tak to nesouvisí s pochopením monád, ale 
Mám za to, že jeden z hlavních důvodů, proč se Haskell nerozšířil, jsou přesně takhle se chovající lidi: programují v tom pět let, cítí se jako kněží desátého zasvěcení ezoterního spolku supermanů a kdokoli má nižší zasvěcení, pro toho mají jenom "tak si to nastuduj, ať taky dosáhneš stejnýho zasvěcení".
Je hezky vidět, jak na to jde úplně jinak Elm. Nedělá z věcí vědu, nevytváří desetiúrovňový abstrakce, snaží se být srozumitelnej nováčkům. A funguje to. Narozdíl od Haskellu, kterej je (bohužel) do značné míry sekta...
			 
			
			- 
				
Jo a mimochodem, kdyby něco takovýho bylo, tak to nesouvisí s pochopením monád, ale 
Mám za to, že jeden z hlavních důvodů, proč se Haskell nerozšířil, jsou přesně takhle se chovající lidi: programují v tom pět let, cítí se jako kněží desátého zasvěcení ezoterního spolku supermanů a kdokoli má nižší zasvěcení, pro toho mají jenom "tak si to nastuduj, ať taky dosáhneš stejnýho zasvěcení".
Je hezky vidět, jak na to jde úplně jinak Elm. Nedělá z věcí vědu, nevytváří desetiúrovňový abstrakce, snaží se být srozumitelnej nováčkům. A funguje to. Narozdíl od Haskellu, kterej je (bohužel) do značné míry sekta...
 Tohle je s odpuštěním blbost, v se tak nechoval a nevím ani o nikom jiném z FP. Naopak komunita okolo FP je nebývale vstřícná a ochotná. Ono vůbec spojovat rozšíření jazyka s chováním jeho uživatelů je dost přitažené za vlasy. Je to prostě obtížnější koncept, na rozdíl např. od malé násobilky.
			 
			
			- 
				
Naopak komunita okolo FP je nebývale vstřícná a ochotná.
Jo, hlavně ta místní :)
			 
			
			- 
				
Naopak komunita okolo FP je nebývale vstřícná a ochotná.
Jo, hlavně ta místní :)
 No dyť, stačí se slušně zeptat a všichni se můžou přetrhnout. A teď už fakt spát.
			 
			
			- 
				
No dyť, stačí se slušně zeptat a všichni se můžou přetrhnout. A teď už fakt spát.
Anebo se na nic neptat a dozvíš se, že seš přitroublej :)
https://forum.root.cz/index.php?topic=13225.msg166597#msg166597
			 
			
			- 
				
Opravdu nechceš odpovědět 1 a/b a 2 a/b?
Ne, nemám potřebu hrát nějaký rádobypsychohry.
To není žádná psychohra a já nechtěl abys něco hrál, takže to není ani žádný důvod proč ne. Prostě mě to zajímalo. Každopádně vidím že se ti nechce, ať už jsou skutečné důvody jakékoliv. Užívej si dál svoje hejty (zkus si někdy spočítat v kolika příspěvcích napíšeš něco konstruktivního a užitečného a v kolika jen hejtuješ a babráš se v tom kdo co blbě řekl a jaký to byl hlupák, píčus a onanista), já končím a doufám že se mi podaří dlouho se držet stranou diskuzí, ve kterých se vyskytuješ. I když je to občas škoda u jinak zajímavých témat, nestojí to za to.
			 
			
			- 
				
Každopádně vidím že se ti nechce
No nechce se mi především proto, že jsem ti explicitně napsal 
Zkus si tu diskusi přečíct ještě jednou, aniž bys do ní vkládal předpoklad "liftovat = použít lift z Haskellu".
...a ty mě manipuluješ do toho, abych si vybral ze dvou možností, kde jednu považuješ za odsouzeníhodnou a druhá ten předpoklad obsahuje?
Když neposloucháš, co říkám, tak proč by ti měl chtít odpovídat?
			 
			
			- 
				
dík za připomínku, ale nechci tady šermovat teorií kategorií, nejsem matematik, ten pojem IMHO ani formální definici nepotřebuje, aby se dal normálně použít v diskuzi mezi programátory, takže to lift (f a) == lift f (lift a) se mi zdá v neformálním prostředí dostačující
 Ano, určitě je dostačující
A vejde se do téhle definice https://wiki.haskell.org/Lifting#Arrow_lifting ?
Pokud budu mít funkci f: String -> Int, tak jak bude v tomhle případě vypadat to "lift a"?
myslím, že na to nikdo neodpověděl, Arrows jsem si nastudoval, až dneska ráno, takže některé věci možná jdou udělat jednodušeji než jsem to udělal já
import Control.Arrow
type My1stArrowTy b c = b -> c
liftFuncToMy1stArrow :: (b -> c) -> My1stArrowTy b c
liftFuncToMy1stArrow = arr
lengthLiftedToMy1stArrow :: My1stArrowTy String Int
lengthLiftedToMy1stArrow = arr length
main = do
   let l = (arr (const "hello") >>> arr length) () -- (lift f) (lift a)
   let r = arr (const (length "hello")) () -- lift (f a)
   print $ l == r
			 
			
			- 
				
myslím, že na to nikdo neodpověděl
Ne - a dík moc, že to děláte. Nebaví mě, že konkrétní věci se tady ignorují a rozpitvávají blbosti...
(lift f) (lift a)
Jaký typ má lift? Neměl jste ho totiž ani v té definici... (konkrétně, bez "metahaskellu")
			 
			
			- 
				
myslím, že na to nikdo neodpověděl
Ne - a dík moc, že to děláte. Nebaví mě, že konkrétní věci se tady ignorují a rozpitvávají blbosti...
(lift f) (lift a)
Jaký typ má lift? Neměl jste ho totiž ani v té definici... (konkrétně, bez "metahaskellu")
vždyť o tam máte - liftFuncToMy1stArrow
			 
			
			- 
				
vždyť o tam máte - liftFuncToMy1stArrow
Jo, sorry, já jsem tam přehlídl jednu věc, chtěl jsem to hned vzít zpátky, ale předběhl jste mě.
			 
			
			- 
				
No dyť, stačí se slušně zeptat a všichni se můžou přetrhnout. A teď už fakt spát.
Anebo se na nic neptat a dozvíš se, že seš přitroublej :)
https://forum.root.cz/index.php?topic=13225.msg166597#msg166597
zpětně vidím problém v tom, že jste identifikoval typovou třídu Monad s monádou jako takovou (IO), dá se psát `bindIO` místo >>=, ale to neznamená, že nepoužívate monadické rozhraní k IO ((>>=)==bindIO) (a jak jsem napsal, není to přenositelné)
			 
			
			- 
				
zpětně vidím problém v tom, že jste identifikoval typovou třídu Monad s monádou jako takovou (IO)
Je možný, že jsem se někde vyjádřil tak, že to tak na vás může působit. Já to tam nikde nevidím.
, dá se psát `bindIO` místo >>=, ale to neznamená, že nepoužívate monadické rozhraní k IO ((>>=)==bindIO) (a jak jsem napsal, není to přenositelné)
Nevím, co znamená "nepoužívate monadické rozhraní k IO". Smyslem toho příkladu bylo ukázat, že se vstup/výstup se dá dělat "napřímo", bez použití slova "Monad" - tj. že IO monáda není žádná tajemná černá magie, tzv. "způsob, jak v Haskellu dělat vstupně/výstupní věci", ale jenom takový hezký způsob, jak to zabalit, aby ten vstup/výstup byl user-friendly.
Taky ten příklad měl přiblížit způsob, jak to funguje, člověku, který umí pracovat s věcma jako jsou třeba ty Promisy - v tomhle zápisu je ten Promise vyloženě vidět.
			 
			
			- 
				
příkladu bylo ukázat, že se vstup/výstup se dá dělat "napřímo", bez použití slova "Monad" - tj. že IO monáda není žádná tajemná černá magie, tzv. "způsob, jak v Haskellu dělat vstupně/výstupní věci", ale jenom takový hezký způsob, jak to zabalit, aby ten vstup/výstup byl user-friendly.
fajn, kvituju záměr, ale provedení považuju za extrémně nešťastné (trochu jako tvrdit že nepotřebujete operátor + protože CPU má instrukci add (a mít ji nemusí)), ale do tohohle už fakt nechci zabředávat, to jenom abyste měl možnost pochopit můj pohled
			 
			
			- 
				Zpátky k tomuhle:
vždyť o tam máte - liftFuncToMy1stArrow
Jo, sorry, já jsem tam přehlídl jednu věc, chtěl jsem to hned vzít zpátky, ale předběhl jste mě.
jeden z problémů té vaší definice totiž vidím v tom, že v ní pracujete s "lift f" a "lift a", což předpokládám v Haskellu nejde nadefinovat (?) a i tady si pomáháte tím const. Takže to vlastně není "lift a", ale "lift (const a)", což je takový trik, který sice můžu chápat a rozumět mu, ale definici tak, jak jste ji měl, to imho porušuje.
Asi čistější by bylo si v té definici udělat nějaké liftFunc a liftValue, ale to byste pak zase musel nějak vyargumentovat, že tyhle dvě funkce "dělají to samé", což by bylo kostrbatý a zase neformální.
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".
Ale to je jedno, já bych to už nerozpitvával, všichni víme, co lift dělá, a není o čem nad ním diskutovat. Klidně vám k tomu nechám poslední slovo a už se nebudu vyjadřovat, pokud tam nebude na mě mířená otázka :)
----
Spíš jestli teda jste nade mnou definitivně nezlomil hůl, zkuste se prosím bez předpojetí a přednasranosti zamyslet nad https://forum.root.cz/index.php?topic=18107.msg261961#msg261961 - třeba mi nakonec porozumíte.
			 
			
			- 
				
 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.
			 
			
			- 
				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)
			 
			
			- 
				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 :)
			 
			
			- 
				
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
			 
			
			- 
				
na ten zbytek reagovat nebudu
Škoda.
			 
			
			- 
				
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ě.
			 
			
			- 
				
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
			 
			
			- 
				
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).
			 
			
			- 
				
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.
			 
			
			- 
				
... ž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
			 
			
			- 
				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.
			 
			
			- 
				
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.
			 
			
			- 
				
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 :)
			 
			
			- 
				
... 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í.
			 
			
			- 
				
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.
			 
			
			- 
				
Ono třeba s objektovým programováním to není o moc lepší...
oh, přehlédl jsem...
			 
			
			- 
				
Nejlepší je OOP tak, jak ho má Go. Tam se nikdo nehádá.
Já jsem si celkově myslel, že Go je super, dokud jsem v něm teď nedělal jednu věc, která vyžaduje nějaké abstrakce a myslel jsem že rozkoušu klávesnici a vyhodím kompl z okna. Go mě dost zklamalo. Když člověk dělá nějakou jasnou konkrétní věc, tak je super - přímočaré jasné, s nízkou kognitivní zátěží. Ale jakmile potřebuje psát trochu abstraktněji, tak se bez generik a algebraických typů cítí jak bezrukej :(
Kdyby tam minimálně tyhle dvě věci přidali (generika by bohatě stačila prvního řádu), byl by to imho super jazyk.
Ale zase má závislostní typy (typové konstruktory nad hodnotami)
Co tím máš namysli? Teď si tohle vůbec nemůžu vybavit.
Taky ten striktně nominální type system je trochu kotroverzní volba :)
			 
			
			- 
				
I když s vámi více méně souhlasím, velmi se bráním slovnímu spojení "to musí pochopit každý". 
Souhlas, to byla příliš velká zkratka. Myslel jsem každý člověk, který je schopný trochu rozumně programovat.
			 
			
			- 
				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ě.
Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP. 
			 
			
			- 
				
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ě.
Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP.
Mám s nimi své zkušenosti :-)
			 
			
			- 
				
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ě.
Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP.
Spis naopak - kdo se o tomhle musi hadat a nema v tom jasno (nekdy muze ctverec dedit z obdelnika, nekdy neni mozna ani jedna hierarchie) nepochopil ani zaklady.
			 
			
			- 
				
Nejlepší je OOP tak, jak ho má Go. Tam se nikdo nehádá.
Já jsem si celkově myslel, že Go je super, dokud jsem v něm teď nedělal jednu věc, která vyžaduje nějaké abstrakce a myslel jsem že rozkoušu klávesnici a vyhodím kompl z okna
 Jakou?
			 
			
			- 
				
Jakou?
Právě že ani nic světobornýho a i tak jsem narazil. Asi to nemá smysl vysvětlovat, princip toho programu je celkem jednoduchej, ale bylo by na dlouho vysvětlit, v čem přesně byl problém.
			 
			
			- 
				
Jakou?
Právě že ani nic světobornýho a i tak jsem narazil. Asi to nemá smysl vysvětlovat, princip toho programu je celkem jednoduchej, ale bylo by na dlouho vysvětlit, v čem přesně byl problém.
 Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu. Jediná WTF věc je kontrola chyb, ale i to je vlastně tvůrčí záměr. Člověk se prostě musí oprostit od OO myšlení à la Java.
			 
			
			- 
				
Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu. 
Jestli myslíš ty zabudované, tak ty jsou iiirc jenom dva - array a map.
Jediná WTF věc je kontrola chyb, ale i to je vlastně tvůrčí záměr. Člověk se prostě musí oprostit od OO myšlení à la Java.
No to každopádně, ta kontrola chyb je po chvilce děsně otravná. Ale jinak spíš záleží, co vnímáš jako WTF a co jenom jako něco, co je prostě jinak, než bys čekal, nevyhovuje ti to, ale bereš to prostě že to tak je. To je subjektivní.
Třeba docela překvapivý může být:
There's an important way in which embedding differs from subclassing. When we embed a type, the methods of that type become methods of the outer type, but when they are invoked the receiver of the method is the inner type, not the outer one.
https://golang.org/doc/effective_go.html
Ilustrace:
https://play.golang.org/p/446pcKpJRop
Nebo jinej problém, co jsem měl, spočíval v tom, že jsem měl modul, kterej definoval obecnej graf s obecným uzlem 
type Node interface {...}
a pak několik modulů definujících konkrétní implementaci:
type SuperDuperNode struct {...}
...no a pak když jsem chtěl v tom "obecným" modulu deserializovat z JSONu strukturu
Nodes map[NodeID]Node
...tak se začaly dít věci... (TL;DR: nijak rozumně to nejde napsat, každý řešení je příšerný)
			 
			
			- 
				
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.
To máš jako s vektory ve fyzice - můžeš to vysvětlit tak, jako se to vysvětluje dětem na základní škole pomocí šipek, nebo tak, jako někdy v 5. semestru na VŠ, pomocí duálních prostorů a tenzorů. Pokud chápeš ten druhý popis, je ti jasné, že ty šipky byly dost značné zjednodušení za cenu definičních nepřesnotí a nejasností a daly se s nimi dělat a/nebo představovat jen určité operace. Ale pokud zrovna neřešíš problémy obecné teorie relativity, tak si zřejmě vystačíš s tím "šipkovým modelem", ať už ten "tenzorový model" znáš, nebo ne.
Tak či tak, začínat tím druhým způsobem by mi připadalo krajně nevhodné v jakémkoli případě.
Jinak se přiznám, že mě FP taky zatím nijak zvlášť nechytlo. Ani OOP. To druhé ale musím, to první zatím naštěstí ne. :)
			 
			
			- 
				
Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu. 
Jestli myslíš ty zabudované, tak ty jsou iiirc jenom dva - array a map.
 chan taky. Právě channels (a příslušný runtime) jsou dle mého skromného názoru na Go to nejlepší, jinak ten jazyk ničím nevyniká.
			 
			
			- 
				
chan taky. Právě channels (a příslušný runtime) jsou dle mého skromného názoru na Go to nejlepší, jinak ten jazyk ničím nevyniká.
No to každopádně. To, že dostali CSP-like záležitosti do mainstreamu je na Nobelovku* :) Však to jim podle mě získalo ten drajv. Škoda, že tím předběhli Rust, kterej už ten závod asi nedá, tomu bych fandil víc :)
* nevím ovšem na jakou. Asi za mír [v duši všech, kdo píšou něco konkurentního] :)
			 
			
			- 
				
* nevím ovšem na jakou. Asi za mír [v duši všech, kdo píšou něco konkurentního] :)
 Nějakou cenu za civil engineering.
			 
			
			- 
				Prymku, mas neco na githubu? Udelam ti codereview  8)
			
 
			
			- 
				
Prymku, mas neco na githubu? Udelam ti codereview  8)
Veřejně nic zajímavýho ani čerstvýho.
Ale tohle by sis mohl forknout a dodělat, nemám čas si s tím dál hrát a je to škoda :) https://github.com/mprymek/symconfig
Když se ozveš ne-anonymně, pošlu ti čerstvější verzi :)
			 
			
			- 
				
Ale zase má závislostní typy (typové konstruktory nad hodnotami)
Co tím máš namysli? Teď si tohle vůbec nemůžu vybavit.
 Pole je typu typu ω→*→*, i když v tomto případě to je spíš jen nepodstatná náhoda.
			 
			
			- 
				
Pole je typu typu ω→*→*, i když v tomto případě to je spíš jen nepodstatná náhoda.
Tomu pořád nerozumím :)
			 
			
			- 
				
Pole je typu typu ω→*→*, i když v tomto případě to je spíš jen nepodstatná náhoda.
Tomu pořád nerozumím :)
 Je to typový konstruktor beroucí přirozené číslo, to není pro generika typické. Je to dependent type.
			 
			
			- 
				
Je to typový konstruktor beroucí přirozené číslo, to není pro generika typické. Je to dependent type.
Ajo, ty myslíš, že "an array's length is part of its type". Nějakým řízením osudu jsem to zatím nepotřeboval, vystačil jsem si se slices a literálama polí, takže tohle ošahaný nemám a v tutoriálu jsem to spíš znuděně prolítl, takže mi tohle ani nedošlo. Každopádně je to zajímavej postřeh, že dependent types mají jenom ty ulítlejší akademizcký jazyky... ...a Go :)))
			 
			
			- 
				
Prymku, mas neco na githubu? Udelam ti codereview  8)
https://github.com/mprymek/symconfig
 Ten odkazovaný tech report je zajímavý, i když celkově to na mě působí jako mnoho povyku pro nic, protože takhle se to normálně dělá, jenom to akademicka přikrášlili a nafoukli.
			 
			
			- 
				
Ten odkazovaný tech report je zajímavý, i když celkově to na mě působí jako mnoho povyku pro nic, protože takhle se to normálně dělá, jenom to akademicka přikrášlili a nafoukli.
V package managementu asi jo, ale v configuration managementu ne. Tam vévodí Ansible, Puppet, Chef, Salt a poslední dobou už i jenom RUN v Dockerfilech :( Nejblíž k nějakému aspoň trochu teoriticky podloženému přístupu má Cfengine (z toho, co jsem zatím viděl).
			 
			
			- 
				
Ten odkazovaný tech report je zajímavý, i když celkově to na mě působí jako mnoho povyku pro nic, protože takhle se to normálně dělá, jenom to akademicka přikrášlili a nafoukli.
V package managementu asi jo, ale v configuration managementu ne. Tam vévodí Ansible, Puppet, Chef, Salt a poslední dobou už i jenom RUN v Dockerfilech :( Nejblíž k nějakému aspoň trochu teoriticky podloženému přístupu má Cfengine (z toho, co jsem zatím viděl).
https://hackage.haskell.org/package/propellor (https://hackage.haskell.org/package/propellor)... akorát mám pocit, že autor je tak trošku pankáč, ale na něco to používám a docela dobrý.
			 
			
			- 
				
https://hackage.haskell.org/package/propellor (https://hackage.haskell.org/package/propellor)... akorát mám pocit, že autor je tak trošku pankáč, ale na něco to používám a docela dobrý.
Wow, tak na to se rozhodně kouknu, dík moc za tip.
Na první pohled mě tam teda zaráží, že spousta věcí, který bych čekal, že budou obecný, jsou "DebianLike", ale minimálně za pohrání si to určitě bude stát.
A má tam dokonce sunxi, to je bomba :)