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 ... 196 197 [198] 199 200 ... 618
2956
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 18:27:08 »
Jsou to "ST akce" - podobně jako IO akce, a v ST monadu se řetězí.
Však to je přesně to, co jsem psal:

to bude neco ve smyslu retezeni lambd

- pokud bys tam měl dostupnou operaci odpovídající bindIO, tak by to ani monáda být nemusela.

2957
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 18:13:56 »
nepřijde vám jako problém, že váš "tutoriál" k IO v haskellu nefunguje se standardním interpretrem haskellu?
Ne, protoze bindovani IO je operace, kterou uzivatel nepotrebuje (prave diky monadam), takze ani ve specifikaci nemusi byt. Ale jelikoz v GHC je, da se snadno ukazat, jak IO doopravdy funguje - ze to neni zadna tajemna magie, ale jenom takovy trosku lepsi seznam IO operaci, ktery se provede jenom proto, ze se posle do main.

Ta nová hodnota se zapíše na stejné místo v paměti.
Ne. Operace "zapis neco do pameti" v cistem jazyce vubec nema co pohledavat ;)

2958
Odkladiště / Re:Proč jsou všichni proti systemd?
« kdy: 17. 05. 2016, 18:10:12 »
Jako kdyz nekdo tvrdi, ze je to kvuli rychlosti a ono neni? ;)
Jestli narazis na me, tak ja jsem nerikal, ze je to KVULI rychlosti, ale ze rychlost bootu je vec, kterou typicky lidi ocenuji. Protoze zadne jine dusledky to (zatim?) pro BUD (Bezneho Uzivatele Desktopu) nema.

2959
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 18:00:06 »
spíš přitroublého ignorování, bindIO není standardní haskell, ale ghc
To na veci ale vubec nic nemeni.

2960
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 17:52:32 »
Nechtěl bys napsat nějaký Yet another monad tutorial?
Naopak - to neni navod k monadam, to je navod, jak pochopit IO v Haskellu pomoci ostentativniho ignorovani pojmu monada ;)

2961
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 17:51:07 »
To jsem nepsal já. Byla to odpověď andyho na mou otázku. Pochopil jsem to tak, že mutabilita tam je. Co jiného dělá writeSTRef?
Nevim, ja s tim praktickym Haskellem nemam zkusenosti. Ale predpokladam, ze to bude neco ve smyslu retezeni lambd, kde kazda vezme hodnotu a vrati jinou (nebo stejnou). Takze "zmena hodnoty" pak znamena za ten retezec lamb pridat dalsi.

Nebo tak neco ;) Ale kazdopadne porad je to nejakej figl jak simulovat vlastnosti mutability v imutabilnim prostredi.

2962
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 17:19:51 »
Jinak je pravda, že jsem tomu zase tolik nedal... přeci jen, Erlang se mi zalouvá více... :)
Hodnej hoch! Cim vic erlangistu, tim lepsi svet! :))

Nicmene mam pro tebe takovou pomucku, jak mozna to do notaci pochopis lip, hele, vubec to neni slozity:

Mas ucebnicovy priklad:
Kód: [Vybrat]
main = do
  putStrLn "Hello, what's your name?"
  name <- getLine
  putStrLn ("Hey " ++ name ++ ", you rock!")

to "do" a "<-" je jenom syntaktickej cukr, ve skutecnosti je to zkratka pro tohle:
Kód: [Vybrat]
main =
  (putStrLn "Hello, what's your name?") >>
    (getLine >>= (\name -> putStrLn ("Hey " ++ name ++ ", you rock!")))

Vsimni si tam te lambdy "\name ->". Operator (>>=) dela to, ze rika "vystup prvni IO akce prived na vstup lambdy, ktera vraci druhou IO akci". A operator (>>) dela to same, akorat vystup prvni IO akce zahodi. Takze muzeme operator (>>) nahradit obecnejsim (>>=) a kod dal prevest na:
Kód: [Vybrat]
main =
  (putStrLn "Hello, what's your name?") >>=
    (\_ ->
      getLine >>=
        (\name -> putStrLn ("Hey " ++ name ++ ", you rock!"))
    )

No a ted si musime jenom ujasnit, ze tenhle kod porad nic nevykonava, je to jenom staticky popis toho, jake akce by se mely provest, v jakem poradi a jaka si maji predavat data. Operator (>>=) pouziva ty divne monady:
Kód: [Vybrat]
Prelude> :t (>>=)
(>>=) :: Monad m => m a -> (a -> m b) -> m b
...takze se jich zbavime taky!

Kód: [Vybrat]
import GHC.Base (bindIO)

main =
  bindIO
    (putStrLn "Hello, what's your name?")
    (\_ ->
      bindIO
        getLine
        (\name -> putStrLn ("Hey " ++ name ++ ", you rock!"))
    )
...funkce bindIO nedela nic jineho nez ze dva RECEPTY na IO (staticky popis IO akci) posklada za sebe, cimz vznikne nova IO akce zahrnujici ty dve:
Kód: [Vybrat]
Prelude GHC.Base> :t bindIO 
bindIO :: IO a -> (a -> IO b) -> IO b

Jak vidis, abys delal IO v Haskellu, monady nepotrebujes. Postupovali jsme opacnym zpusobem, nez jde abstrakce: k razeni IO potrebujes otravne lambdy, takze je fajn si zavest operatory, ktere te od nich odstini. No a kdyz mas tohle, tak si jeste zavedes dalsi syntakticky cukr, ktery to jeste cely obali tak, aby to vypadalo jakoze imperativni programovani. Co to pripomina? No prece promises s JS! Protoze to jsou taky de facto monady. Akorat o tom nikdo nemluvi, nikdo z toho timpadem nema strach a vsichni to naprosto v klidu pouzivaji :)

2963
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 17:03:08 »
Funkcionálnost s pořadím imho nutně nekoliduje. Pokud tedy chápu správně, že FP je o referenční transparentnosti a pravidle, kdy funkce je ovlivňována jen argumenty. Jen je to občas problém jak funkcionálně vyjádřit následnost.
Pokud mas referencni transparentnost, tak to znamena, ze jakykoliv vyraz muzes vyhodnotit predem, ulozit si vyslednou hodnotu do tabulky a kdyz priste narazis na stejny vyraz, dosadis tam jenom hodnotu z tabulky. Takze z tehle definice pak muzes vyrazy vyhodnocovat v libovolnem poradi. A jedine, u ceho by te poradi vyhodnocovani mohlo zajimat, je IO. U vseho ostatniho je ti to putna :)

2964
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 16:51:22 »
... V Haskellu je pro tyto účely tzv. ST monad, který de-fakto umožňuje provádět mutable programování v "izolaci" - tzn. ta mutabilita je uvnitř a neuteče nikam ven. Mně připadá, že ale výsledný kód má do přehlednosti dost daleko - je to takové ... imperativní ...

Jinak je pravda, že jsem tomu zase tolik nedal... přeci jen, Erlang se mi zalouvá více... :)

To, co pise gl, je zavadejici. Zadna mutabilita tam neni. Stejne jako funkce s typem IO nejsou "neciste". Vsechno je porad ciste a imutabilni, akorat existuje zpusob, jak i presto dosahovat nejakych vnejsich efektu.

2965
Odkladiště / Re:Proč jsou všichni proti systemd?
« kdy: 17. 05. 2016, 16:41:54 »
Důvody, proč jsou v internetových diskusích často vidět komentáře proti systemd jsou
To je jenom "zbozne" prani, doklady pro to zadne nemas.

2966
Vývoj / Re:Má Haskell budoucnost?
« kdy: 17. 05. 2016, 16:20:35 »
Takže, abych si to ujasnil...
TL;DR: ani jedno z toho, co pises, neni pravda tak, jak to pises :)

1) Pro používání monád je nemusím chápat...
Monady jsou mj. prostredek, jak v pure+lazy jazyce dosahnout souslednosti nejakych operaci. Cili je to vyborny zpusob, jak v pure+lazy jazyce psat IO. Neni to ale jediny zpusob. V principu muzes delat IO i bez znalosti monad, ale monady jsou lepsi.

2) Haskell je pure, ale v monádách se může klidně programovat imperativně...
Monady jsou zpusob, jak v pure+lazy psat imperativnim stylem (tj. psat posloupnost operaci, ktere se provedou ve stejnem poradi, jak jsem je napsal).

3) V monádách  klidně můžou existovat mutable typy...
Ne.

4) Ten, kdo chápe monády, je nedokáže dobře vysvětlit...
Vetsina lidi asi ne :) Ale existuji i dobra vysvetleni. Mne se treba libi, ze Learn you a Haskell mluvni prvne o IO a az o par kapitol dal o monadach. Pokud to nepochopis z tohodle textu a za radneho snazeni se, tak asi Haskell neni vhodny jazyk pro tebe (bez jakekoliv urazky - to je proste fakt, ne kazdemu ten zpusob uvazovani musi vyhovovat).

2967
Odkladiště / Re:Proč jsou všichni proti systemd?
« kdy: 17. 05. 2016, 16:08:36 »
na to mam SSD a ne nejaky programy...
A když máš SSD i systemd, tak ti to místo pěti sekund bootuje čtyři, což je přímo orgiastický zážitek :)))

2968
Vývoj / Re:Má Python budoucnost?
« kdy: 17. 05. 2016, 16:00:39 »
A jestli Lua a nebo Python není jedno ani omylem, protože zaměstnavatel, zvyky v daném oboru, práce v týmu, zastupitelnost lidí, atd. Pokud se všeobecně v oboru na půlce planety široce používá třeba Python, tak nemá smysl se učit cokoliv dalšího, protože je to ztráta času a programovací jazyk je prostředek, nikoliv cíl. V tom čase se dá dělat X užitečnějších neprogramátorských věcí.
Pokud by takhle uvažovali všichni, dodneska programujeme ve Fortranu a Cobolu.

2969
Odkladiště / Re:Proč jsou všichni proti systemd?
« kdy: 17. 05. 2016, 15:57:08 »
...dodal bych k té diskusi jenom jedno:

Proč jsou všichni správci proti systemd? Většinou totiž řeší všechno, na co si kdy stěžují.
Admini oceňují především stabilitu. S klasickými init systémy se naučili pracovat, znají jejich vlastnosti (dobré i špatné), nemusí se bát, že jim podrazí nohy v nejmíň vhodnou chvíli, umí hodně dobře předvídat jejich chování a umí je v případě chyby rychle opravit.

Systemd je natolik nové a živé, že admini mají (podle mě oprávněný) strach z nepředvídatelnosti. Navíc systemd adminům přináší jenom málo, pro servery má jenom málo killer features, jestli vůbec nějaké. Největší plus je asi potenciálně lepší integrovatelnost s kontejnery. Druhé plus může být automatické restartování služeb, ale na to už nástroje existují i pro klasické inity (supervisord, daemontools apod.)

Takže typický nespokojenec je admin, typický spokojenec uživatel desktopu (typicky jenom proto, že mu to božsky rychle bootuje ;) )

Stran: 1 ... 196 197 [198] 199 200 ... 618