Jak si rozšiřujete své vědomosti?

Kit

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #135 kdy: 15. 04. 2016, 16:23:36 »
tak to asi vysvětluje proč furt srovnáváte grupy a monády v haskellu
Mimochodem, neni zadna "monada v haskellu". Monada je pojem z algebry/CT. Trida Monad v Haskellu je jenom implementace toho konceptu. A s grupami to srovnavam proto, ze grupa, monoid a .... monada jsou velmi pribuzne pojmy.

Monády a grupy mají společné to, že to není nikde kloudně vysvětleno na méně než několika stránkách. Ani ti, kteří význam těchto pojmů pochopili, je nedokáží jednoduše vysvětlit, ale zato je hojně používají.


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #136 kdy: 15. 04. 2016, 16:25:08 »
až do momentu, kdy začal srovnávat "třídy" Monad a Group, protože analogii té první by byla "třída" GroupElement.
Ale pane kolego, vy nam zase pábíte! :)))

Teď budeme Prýmkovi omlacovat o hlavu, že obecná třída Group v Haskellu implementovat nejde?

Tak jo no, to je velmi konstruktivní a velmi k věci :))))

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #137 kdy: 15. 04. 2016, 16:29:33 »
až do momentu, kdy začal srovnávat "třídy" Monad a Group, protože analogii té první by byla "třída" GroupElement.
Ale pane kolego, vy nam zase pábíte! :)))

Teď budeme Prýmkovi omlacovat o hlavu, že obecná třída Group v Haskellu implementovat nejde?

Tak jo no, to je velmi konstruktivní a velmi k věci :))))
proč by nešla? a já bych řek, že to je velmi k věci (viz můj příspěvek, který jste označil za komický)

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #138 kdy: 15. 04. 2016, 16:31:43 »
Monády a grupy mají společné to, že to není nikde kloudně vysvětleno na méně než několika stránkách. Ani ti, kteří význam těchto pojmů pochopili, je nedokáží jednoduše vysvětlit, ale zato je hojně používají.
Monáda jako obecný pojem asi triviálně vysvětlit nejde. Je to prostě abstraktní koncept, který pokrývá úplně odlišné instance, proto to lidem neleze do hlavy.

Pointa je ale v tom, že nikomu monádu obecně vůbec vysvětlovat nepotřebuješ. Prostě mu řekneš "hochu, vem callbacky, které provádí io akce, a pomocí téhle operace bind je poskládej za sebe. bind zabezpečí, že se výstup jednoho callbacku předá na vstup druhého  a když dojde k chybě, tak se ta chyba nepřenáší do dalšího callbacku".

A je vymalováno. Použil jsem slovo Monáda? Nepoužil. Pochopí to každej? Pochopí. Nahonil jsem si u toho ego a udělal ze všech nedouky? Neudělal. V tom má tahle metoda vysvětlení slabinu :)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #139 kdy: 15. 04. 2016, 16:32:41 »
až do momentu, kdy začal srovnávat "třídy" Monad a Group, protože analogii té první by byla "třída" GroupElement.
Ale pane kolego, vy nam zase pábíte! :)))

Teď budeme Prýmkovi omlacovat o hlavu, že obecná třída Group v Haskellu implementovat nejde?

Tak jo no, to je velmi konstruktivní a velmi k věci :))))
proč by nešla? a já bych řek, že to je velmi k věci (viz můj příspěvek, který jste označil za komický)
Teď Prýmek jen ukázal, jak tomu vůbec nerozumí. Já v této diskusi končím (minimálně do doby, než se Prýmek naučí rozumět psanému slovu). (Až na jeden poslední příspěvek, hold on.)


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #140 kdy: 15. 04. 2016, 16:33:13 »
(viz můj příspěvek, který jste označil za komický)
Komické je tvrdit, že grupa je grupa náhodou, zatímco monáda je monádou, protože to je potřeba.

andy

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #141 kdy: 15. 04. 2016, 16:38:26 »
No začátečník IMO prostě použije "do" notaci v IO monadu v vůbec nepotřebuje vědět, co monada je. Poměrně brzo narazí na rozdíl mezi "pure" a "monadic" výpočtem, tak se s tím nějak popere (vezme to jako nějakou "divnou" kontejnerizaci) a pořád nemusí tušit, co to monáda je. A program už může napsat docela slušný.

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #142 kdy: 15. 04. 2016, 16:39:37 »
(viz můj příspěvek, který jste označil za komický)
Komické je tvrdit, že grupa je grupa náhodou, zatímco monáda je monádou, protože to je potřeba.
to já ale netvrdím, jestli jste to tak pochopil, tak je to chyba, těžko říct na čí straně

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #143 kdy: 15. 04. 2016, 16:40:46 »
(vezme to jako nějakou "divnou" kontejnerizaci)
Proč? Uplne staci, kdyz si uvedomi, jestli funkce pracuje s hodnotami nebo akcemi.

Jeste jsem neslysel, ze by javascriptista mel problem s orlisenim toho, kdyz fce vraci int a Promise[int]

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #144 kdy: 15. 04. 2016, 16:41:33 »
No začátečník IMO prostě použije "do" notaci v IO monadu v vůbec nepotřebuje vědět, co monada je. Poměrně brzo narazí na rozdíl mezi "pure" a "monadic" výpočtem, tak se s tím nějak popere (vezme to jako nějakou "divnou" kontejnerizaci) a pořád nemusí tušit, co to monáda je. A program už může napsat docela slušný.
+1
taky se velmi brzo začne zajímat o to  :: Monad m => .... u všech těch funkcí

andy

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #145 kdy: 15. 04. 2016, 16:44:39 »
(vezme to jako nějakou "divnou" kontejnerizaci)
Proč? Uplne staci, kdyz si uvedomi, jestli funkce pracuje s hodnotami nebo akcemi.

Jeste jsem neslysel, ze by javascriptista mel problem s orlisenim toho, kdyz fce vraci int a Promise[int]
Jasně, pokud zná promisy, tak jo. Já je v té době pořádně neznal (ty frameworky s tím akorát začínaly), tak jsem si to vysvětloval jinak. Ale programy jsem byl schopen tvořit výrazně dřív, než jsem do detailu znal category theory kolem monády.... (ne že bych ji moc znal dneska).

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #146 kdy: 15. 04. 2016, 16:55:25 »
až do momentu, kdy začal srovnávat "třídy" Monad a Group, protože analogii té první by byla "třída" GroupElement.
Ale pane kolego, vy nam zase pábíte! :)))

Teď budeme Prýmkovi omlacovat o hlavu, že obecná třída Group v Haskellu implementovat nejde?

Tak jo no, to je velmi konstruktivní a velmi k věci :))))
proč by nešla? a já bych řek, že to je velmi k věci (viz můj příspěvek, který jste označil za komický)

Prýmek měl na mysli toto (v Haskellu nedělám, proto Swift, ale klidně to jde brát jako pseudokód):

Kód: [Vybrat]
protocol GroupElement {
    func operation(x:Self) -> Self
    var unit:Self { get }
    var inverse:Self { get }
}

protocol AdditiveGroupElement : GroupElement, Addible {}

extension AdditiveGroupElement {
    func operation(x:Self) -> Self { return self + x }
    var unit:Self { return zero }
    var inverse:Self { return -self }
}

extension Int : AdditiveGroupElement {}

Swift ve standardní knihovně něco podobného má (protokol ArithmeticType apod.). S monádami to funguje úplně stejně (elegantně).

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #147 kdy: 15. 04. 2016, 16:59:27 »
Komické je tvrdit, že grupa je grupa náhodou, zatímco monáda je monádou, protože to je potřeba.
to já ale netvrdím, jestli jste to tak pochopil, tak je to chyba, těžko říct na čí straně
Ok, tady jsem to možná trochu posunul, tak zpět:

celé čísla jsou grupa shodou okolností, ale pro načtení a vypsání řetězce potřebuju aby IO byla monáda abych ty dvě akce mohl "sečíst" čili bidnout

Z faktu, že množina IO akcí + bind atd. je monádou, plynou nějaké důsledky. Konkrétně například to, že složím-li dvě IO akce za sebe pomocí bindu, jsem pořád ve stejném typu IO ().

Z faktu, že (Int,(+)) je grupa, plynou taky nějaké důsledky, například to, že složím-li sva Inty pomocí operace (+), jsem pořád ve stejném typu Int.

Opravdu je (Int,(+)) grupou "náhodou"? Opravdu nemá grupa a monáda nic společného a je to jenom Prymkova mimozita?


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #148 kdy: 15. 04. 2016, 17:04:16 »
Prýmek měl na mysli toto (v Haskellu nedělám, proto Swift, ale klidně to jde brát jako pseudokód):
Jenom skromný dotaz: ten "důkaz že tomu vůbec nerozumím", spočívá v tom, že jsem použil jiný název nebo ještě v něčem jiném? Pokud ano, v čem? (A poprosím, jestli se můžeme pokusit opět držet tón vzájemného respektu, pokud to nejde, tak raději neodpovídej)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #149 kdy: 15. 04. 2016, 17:11:32 »
Prýmek měl na mysli toto (v Haskellu nedělám, proto Swift, ale klidně to jde brát jako pseudokód):
Jenom skromný dotaz: ten "důkaz že tomu vůbec nerozumím", spočívá v tom, že jsem použil jiný název nebo ještě v něčem jiném? Pokud ano, v čem? (A poprosím, jestli se můžeme pokusit opět držet tón vzájemného respektu, pokud to nejde, tak raději neodpovídej)
Celý tento příspěvek (forma i obsah): http://forum.root.cz/index.php?topic=13078.msg163580#msg163580. A s tím respektem začni u sebe (tentokrát to neříkám v žertu).