Zobrazit příspěvky

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


Příspěvky - Mirek Prýmek

Stran: 1 ... 121 122 [123] 124 125 ... 618
1831
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 10:58:48 »
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).

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

:)

1833
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 10:24:45 »
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 :)

1834
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 10:20:25 »
č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.




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

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

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

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

1839
Vývoj / Re:Nový objev ve funkcionálním programování
« kdy: 19. 04. 2018, 08:56:56 »
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
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:
Kód: [Vybrat]
(>>=)  :: 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á:
Kód: [Vybrat]
$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.

1840
Vývoj / Re:Má Haskell budoucnost?
« kdy: 12. 04. 2018, 16:38:19 »
Nemusíš hned urážet,
Nefandi si :)

ono přesné vyjadřování je poměrně důležité, aspoň teda když jde o matiku, jinak se diskuse vždy zvrtne, protože dochází k nedorozuměním.
Jo, ale při hovoru s inteligentníma lidma se často používají zkratky a teprve když si lidi nerozumí, tak se zeptají a doupřesní. Oproti tomu mezi anonymama je běžný, že si lidi začnou honit triko na krávovině.

Přesný vyjadřování je potřeba, ale ne samoúčelně a ne proto, aby člověk ukojil fašisty. Viz:
Každá monáda má bind
Fakt? "Monáda bind"? Není to spíš tak, že monáda je nějaká struktura, která má nějaké vlastnosti a jedním ze způsobů, jak monádu definovat, je (kromě jiného) bind?

takže jde řetězit
Monáda "jde řetězit"? Fakt? V jakém smyslu? Co nejde řetězit? Opravdu jde řetězit monáda?

ale nevím, jestli je vhodné ji takto definovat,
Já to vím: není vhodné ji takto definovat, protože to že "něco jde zřetězit" není žádná definice, natož monády.

tady jde spíš o zákonitosti, které to řetězení zachovává (především asociativita).
"Především"? Proč? "Monad laws" jsou (v obvyklém znění) tři a všechny musí být splněny. Proč by asociativita měla být důležitější než jiné?

Vidíš, honit si triko na kokotinách je fakt lehký :)

1841
Vývoj / Re:Má Haskell budoucnost?
« kdy: 12. 04. 2018, 15:26:44 »
Nemyslím, v minulosti jsi už vícekrát použil naprosto vážně frázi “sčítání je grupa.”
Jo, asi jednou nebo dvakrát jako zkratku, než jsem pochopil, že se tady vždycky najde nějakej tydýt, kterej sice smysl chápe, ale nemůže si nechat ujít žádnou příležitost nahonit si triko...

Od té doby už píšu radši https://forum.root.cz/index.php?topic=15324.msg209596#msg209596 Tentokrát jsem to napsal fakt schválně a nezklamals...

Akorát nevím, jestli si to fakt myslíš, nebo to je jen zkratkovité uvažování.
Můžu si k tobě zajít lehnout na lehátko, proberem to, třeba mě v mládí mlátil otec novinama. Hypnóza nutná není, ale bodla by.

1842
Vývoj / Re:Má Haskell budoucnost?
« kdy: 12. 04. 2018, 01:28:37 »
To je nesmyslná formulace, grupa je vždy nějaká množina s nějakou signaturou splňující určité podmínky, nelze říct, že binární operace grupy je grupa.
A přesně proto jsem to přesně takhle napsal - protože to tvrzení, na který jsem reagoval, je blbě napsaný a když si domyslíš smysl, tak je nepravdivý.


1843
Vývoj / Re:Má Haskell budoucnost?
« kdy: 11. 04. 2018, 23:00:44 »
Na enterprise programovanie vacsich veci sa pouziva Java, C++, COBOL, C#, ...  Ostatne jazyky sluzia na rychle naprogramovanie malych uzitocnych veci - tzv. skriptovanie.
Chybi ti tam Go.

Podla mna s Haskellom to bola hlavne modna vlna.
Kdy? Pred 28 lety, kdy vznikl? :)

1844
Vývoj / Re:Má Haskell budoucnost?
« kdy: 11. 04. 2018, 22:11:39 »
monada je JEN sekvence operaci, NIC JINEHO.
To je jenom jedna z mnoha predstavitelnych monad. Tohle tvoje tvrzeni je stejne nepravdive jako tvrzeni "grupa neni nic jineho nez scitani".

Je to zpusob jak ve funkcionalnim jazyku popsat, ze abych z hodnoty y spocital z, potrebuju k tomu hodnotu x
Na to nepotrebujes monadu, to se da udelat daleko jednoduseji:
Kód: [Vybrat]
z = f(x,g(y))
Ve skutecnosti tahle konkretni monada, o ktere mluvis, slouzi k tomu, aby se vynutilo poradi vypoctu v jazyce, ktery je lazy, a timpadem poradi vypoctu sam o sobe negarantuje.

1845
Vývoj / Re:Vyšší typy
« kdy: 09. 04. 2018, 20:48:10 »
Takže omluvu dlužíš spíš ty mě. Šup šup
Jak's na to přišel?! Ještě pořád to není jasný?

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