Má Haskell budoucnost?

Re:Má Haskell budoucnost?
« Odpověď #150 kdy: 15. 05. 2016, 18:20:00 »
Dobře, můžeš tvrdit, že IO Monad se vyhodnocuje nějak "líně" tím, že se tam protahuje přes všechny funkce RealWord#, ale to je prostě nějaké teoretické zdůvodnění - prakticky se to prostě vyhodnocuje "eager" (teda mě není vůbec moc jasné, co vlastně v případě monadu má znamenat "lazy" a "strict"....)
To není teoretické zdůvodnění, to je princip, jakým to funguje.

Mohlo by to být i jinak, třeba že bys generoval list IO operací a ty potom realtime provedl přesně v tom pořadí, v jakém v listu jsou. Ale to by bylo mimo jazyk. Ten jazyk sám o sobě by zůstal pořád líný.

Prostě pokud v líném jazyce chceš vynutit pořadí, uděláš to třeba pomocí monády a pokud chceš vynutit línost v nelíném jazyce, uděláš to třeba pomocí futures. Oboje jde a ani jedno neporušuje línost/nelínost toho jazyka. Je to jenom způsob, jak ho nějakou fintou donutit udělat něco, co by jinak "sám od sebe" negarantoval.

...no a to je právě ta pointa: mně přijde, že pořadí potřebujeme častěji, proto je lepší ho mít jako default a finty používat na línost, ne naopak.


Re:Má Haskell budoucnost?
« Odpověď #151 kdy: 15. 05. 2016, 18:21:28 »
Ve striktnim jazyce cokoli v podobe baz(..., ⊥, ...) je ⊥. V non-strict muze a nemusi.
Souhlas. A plyne z toho co?

Re:Má Haskell budoucnost?
« Odpověď #152 kdy: 15. 05. 2016, 18:23:41 »
Ve striktnim jazyce cokoli v podobe baz(..., ⊥, ...) je ⊥. V non-strict muze a nemusi.
Souhlas. A plyne z toho co?

Teoreticky - lazy je u pure FP "lepsi", protoze toho spocita vic.
Prakticky - nic moc, protoze zase zaplatis praktickou cenu v realne implementaci.

Re:Má Haskell budoucnost?
« Odpověď #153 kdy: 15. 05. 2016, 18:25:12 »
Teoreticky - lazy je u pure FP "lepsi", protoze toho spocita vic.
Prakticky - nic moc, protoze zase zaplatis praktickou cenu v realne implementaci.
Čili jsme se dostali k tomu, co jsem říkal? Že si moc nedovedu představit, k čemu by bylo dobré mít non-lazy pure jazyk? ;)

v

Re:Má Haskell budoucnost?
« Odpověď #154 kdy: 15. 05. 2016, 18:26:00 »
Teoreticky - lazy je u pure FP "lepsi", protoze toho spocita vic.
Prakticky - nic moc, protoze zase zaplatis praktickou cenu v realne implementaci.
Čili jsme se dostali k tomu, co jsem říkal? Že si moc nedovedu představit, k čemu by bylo dobré mít non-lazy pure jazyk? ;)
mi přijde, že vůbec nechápete, k čemu to "pure" je


Re:Má Haskell budoucnost?
« Odpověď #155 kdy: 15. 05. 2016, 18:27:06 »
mi přijde, že vůbec nechápete, k čemu to "pure" je
Tak mi to zkus vysvětlit. Řekni, "k čemu to pure je" a kde je to v rozporu s něčím, co jsem řekl.

andy

Re:Má Haskell budoucnost?
« Odpověď #156 kdy: 15. 05. 2016, 18:36:08 »
Mohlo by to být i jinak, třeba že bys generoval list IO operací a ty potom realtime provedl přesně v tom pořadí, v jakém v listu jsou. Ale to by bylo mimo jazyk. Ten jazyk sám o sobě by zůstal pořád líný.
Ale mě čím dál víc připadá, že to tak v podstatě je - že IO je jen způsob jak v "pure" jazyce popsat, jak se ty efekty mají dělat a nějaký "interpret" to následně provede. Ostatně dnes je docela časté si napsat vlastní interpret (Free/Operational monady) a psát si pak kód ve vlastním monadu.
Citace
Prostě pokud v líném jazyce chceš vynutit pořadí, uděláš to třeba pomocí monády a pokud chceš vynutit línost v nelíném jazyce, uděláš to třeba pomocí futures. Oboje jde a ani jedno neporušuje línost/nelínost toho jazyka. Je to jenom způsob, jak ho nějakou fintou donutit udělat něco, co by jinak "sám od sebe" negarantoval.
A není to nakonec Monad docela hezký způsob jak popsat, co má program dělat? Jak bys to popsal jinak? Monad je způsob, jak něco popíšeš, je to datová struktura, se kterou jsi schopen nějak pracovat a vyhodnocovat ji. V ostatních jazycích mi připadá, že funkce je de-fakto "black-box". Monad ten black-box vlastně umožní rozložit. Ale když se ti to nelíbí, tak vůbec nemusíš řešit, jak to funguje - (IO x) ber jako "pointer na funkci", a když to vložíš do těla IO funkce, tak se vykoná. A jsi zpátky v normálních jazycích, v čem je problém?
Citace
...no a to je právě ta pointa: mně přijde, že pořadí potřebujeme častěji, proto je lepší ho mít jako default a finty používat na línost, ne naopak.
Mě naopak připadá, že dát tam nějaký hack kvůli tomu, že chceš IO popsat nějak jinak, než všechno ostatní, co děláš, by nebylo úplně dobré....

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #157 kdy: 15. 05. 2016, 18:41:03 »
Citace
Prostě pokud v líném jazyce chceš vynutit pořadí, uděláš to třeba pomocí monády a pokud chceš vynutit línost v nelíném jazyce, uděláš to třeba pomocí futures. Oboje jde a ani jedno neporušuje línost/nelínost toho jazyka. Je to jenom způsob, jak ho nějakou fintou donutit udělat něco, co by jinak "sám od sebe" negarantoval.
A není to nakonec Monad docela hezký způsob jak popsat, co má program dělat? Jak bys to popsal jinak? Monad je způsob, jak něco popíšeš, je to datová struktura, se kterou jsi schopen nějak pracovat a vyhodnocovat ji. V ostatních jazycích mi připadá, že funkce je de-fakto "black-box". Monad ten black-box vlastně umožní rozložit. Ale když se ti to nelíbí, tak vůbec nemusíš řešit, jak to funguje - (IO x) ber jako "pointer na funkci", a když to vložíš do těla IO funkce, tak se vykoná. A jsi zpátky v normálních jazycích, v čem je problém?
Přesně o tom monády jsou a upřímně fakt nevím, proč o nich někdo pochybuje.

v

Re:Má Haskell budoucnost?
« Odpověď #158 kdy: 15. 05. 2016, 18:47:48 »
mi přijde, že vůbec nechápete, k čemu to "pure" je
Tak mi to zkus vysvětlit. Řekni, "k čemu to pure je" a kde je to v rozporu s něčím, co jsem řekl.
on to tu někdo hezky ilustroval při diskuzi o dokumentační hodnotě typových signatur, jednoduše řečeno, jakou informační hodnotu by měla signatura např. Num a => a -> a pokud by jazyk nebyl pure?

v

Re:Má Haskell budoucnost?
« Odpověď #159 kdy: 15. 05. 2016, 19:11:49 »
Mě naopak připadá, že dát tam nějaký hack kvůli tomu, že chceš IO popsat nějak jinak, než všechno ostatní, co děláš, by nebylo úplně dobré....
proč si něco nalhávat? monády v haskellu jsou hack kvůli potřebě popsat IO a udržet zbytek čistý

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #160 kdy: 15. 05. 2016, 19:17:20 »
Mě naopak připadá, že dát tam nějaký hack kvůli tomu, že chceš IO popsat nějak jinak, než všechno ostatní, co děláš, by nebylo úplně dobré....
proč si něco nalhávat? monády v haskellu jsou hack kvůli potřebě popsat IO a udržet zbytek čistý
To není tak úplně pravda. Monády jsou "čisté" ve smyslu FP. Navíc tam nejsou jen pro IO. Chce to ale ponořit se trochu hlouběji do matematického aparátu, jenž za nimi stojí.

Re:Má Haskell budoucnost?
« Odpověď #161 kdy: 15. 05. 2016, 19:18:07 »
Citace
Tak mi to zkus vysvětlit. Řekni, "k čemu to pure je" a kde je to v rozporu s něčím, co jsem řekl.
on to tu někdo hezky ilustroval při diskuzi o dokumentační hodnotě typových signatur, jednoduše řečeno, jakou informační hodnotu by měla signatura např. Num a => a -> a pokud by jazyk nebyl pure?
A to má být v rozporu s něčím, co jsem řekl? Proč údajně konceptu "pure" nerozumím?

Re:Má Haskell budoucnost?
« Odpověď #162 kdy: 15. 05. 2016, 19:18:15 »
A není to nakonec Monad docela hezký způsob jak popsat, co má program dělat?
Je to způsob, jak zabezpečit pořadí vyhodnocování v jazyce, který ho jinak negarantuje. Konceptuálně je to na úrovni toho listu operací, akorát Monad je mazanější :)

Jak bys to popsal jinak?
V tomhle není sporu. Mně se jenom nelíbilo, jak's psal o tom, že jakoby v monádách laziness neplatí. Platí úplně stejně jako kdekoli jinde. Je to právě způsob, jak i přes laziness dosáhnout řazení.

Re:Má Haskell budoucnost?
« Odpověď #163 kdy: 15. 05. 2016, 19:19:46 »
To není tak úplně pravda.
Není to ani trochu pravda.

v

Re:Má Haskell budoucnost?
« Odpověď #164 kdy: 15. 05. 2016, 19:20:11 »
Mě naopak připadá, že dát tam nějaký hack kvůli tomu, že chceš IO popsat nějak jinak, než všechno ostatní, co děláš, by nebylo úplně dobré....
proč si něco nalhávat? monády v haskellu jsou hack kvůli potřebě popsat IO a udržet zbytek čistý
To není tak úplně pravda. Monády jsou "čisté" ve smyslu FP. Navíc tam nejsou jen pro IO. Chce to ale ponořit se trochu hlouběji do matematického aparátu, jenž za nimi stojí.
hack je možná trochu silné slovo, ani netvrdím, že nejsou užitečná i jinde, sám je používám až příliš, nicméně viz "tackling the awkward squad" :)