1876
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 21:57:46 »
Jinak mohlo by se hodit:
https://wiki.haskell.org/What_a_Monad_is_not
https://wiki.haskell.org/What_a_Monad_is_not
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.
V tom případě by IO monádu nepotřeboval, protože řazení IO by pak šlo triviálně udělat takhle:Kód: [Vybrat]- dle té definice by pořadí výpisu nutně bylo a,b. Funkce f a g můžou dělat cokoli, může to být klidně identita.f(print "b",g(print "a"))
tvrdíte, že kdyby byl haskell "strict", nepotřeboval by IO monádu?To byste musel definovat, co myslíte tím "strict" v kontextu pure jazyka. Já pořád moc nevím, co si pod tím mám představit.

Ve striktnim jazyce cokoli v podobe baz(..., ⊥, ...) je ⊥. V non-strict muze a nemusi.Souhlas. A plyne z toho co?
Ale, ale.To je ale úplně jiný případ. Tím jsi jenom ilustroval, že se v céčku dá napsat kód, který se zacyklí.Kód: [Vybrat]a zase mas ⊥ (jenom tomu proste Ceckar tak nerika, protoze zije v jinem svete)int foo() { for (;;); }
int bar(a, b) { return a; }
bar(1,foo());
def foo = foo
take(3, [1,2,3,4,foo])
To je naprosto normalni semantika striktniho jazyka.Kind of. Céčko třeba žádné nekonečné listy nemá, čili to jeho sémantika není.
int foo() { for (;;); }
int bar(a, b) { return a; }
bar(1,foo());
a zase mas ⊥ (jenom tomu proste Ceckar tak nerika, protoze zije v jinem svete)
Co na tom příkladu není jasné? Jaká smyčka?
take(3,[1..])Ok, beru. Jistě můžu mít jazyk s libovolně nesmyslnou sémantikou.
ma jinou hodnotu podle toho, jaky mas jazyk. Muze to byt [1,2,3] nebo ⊥
Jaký význam má pojem "nelínost" u pure jazyka? Že se občas zacyklí na něčem, na čem by se zacyklit nemusel?
Ne.Co ne? Není venku slunečno? Souhlasím
Ty výrazy mají přesně definovanou hodnotu a jakým způsobem se na ni převedou (jestli korektně nebo nekorektně) je jenom o implementaci, ne o jazyku. To je to, co říkal zboj.
Pokud by se program na těch výrazech zasekl, tak nesplňuje referenční transparentnost, což je definiční znak pure jazyka.
Tak purity a laziness (sic!) jsou ortogonální koncepty, a zrovna ten druhý nepovažuju za příliš šťastnou volbu.A jaký smysl by mělo mít jazyk, který by byl čistý ale ne lazy? Pokud je čistý, tak tam funguje referenční transparentnost, takže v čem by ta non-laziness (díky za upozornění na chybu!) měla spočívat?