Nový objev ve funkcionálním programování

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

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

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

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

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


Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #61 kdy: 19. 04. 2018, 13:54:42 »
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.”

v

Re:Nový objev ve funkcionálním programování
« Odpověď #62 kdy: 19. 04. 2018, 14:24:42 »
...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?

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #63 kdy: 19. 04. 2018, 14:36:35 »
...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.

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

::)

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

Bind pro List taky liftuje hodnoty do monády. Akorát to dělá po prvcích, IIRC.
« Poslední změna: 19. 04. 2018, 15:19:57 od Mirek Prýmek »


Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #65 kdy: 19. 04. 2018, 15:39:18 »
...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 :)


Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #67 kdy: 19. 04. 2018, 16:17:00 »
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

Re:Nový objev ve funkcionálním programování
« Odpověď #68 kdy: 19. 04. 2018, 16:18:43 »
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

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

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

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

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

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

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #71 kdy: 19. 04. 2018, 16:29:20 »
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.

Re:Nový objev ve funkcionálním programování
« Odpověď #72 kdy: 19. 04. 2018, 16:29:31 »
bind neliftuje, return liftuje
Ani tohle jste nechytil. Neřekl jsem, že bind liftuje, ale že v rámci fce, kterou přijímá jako parametr, se "běžná hodnota" "liftuje" (pro experty: mikturuje frkodrťákem) do monády.

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

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

Idris

Re:Nový objev ve funkcionálním programování
« Odpověď #74 kdy: 19. 04. 2018, 16:38:31 »
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.