Má Haskell budoucnost?

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #285 kdy: 17. 05. 2016, 08:50:22 »
Nejde o rigidní matematiku, ale o konzistentní sémantiku. Pokud nějaký operátor má jiný VÝZNAM pro typ A a jiný pro typ B, tak to není dobře. Jestli o tom pochybuješ, užij si, kam to vede, v JavaScriptu ;)

V JS chvili delam, ale na tento konkretni problem jsem snad nenarazil. Jako jo, pretypovani je zajimave
Kód: [Vybrat]
let thisIsNumber = +"1";ale zatim to nikdy nevedlo k chybe. Nebo je rec o retezeni vs scitani? Pokud si nejsem jisty vstupnimi daty, tak je pretypuji/parsuji, pokud si vstupem jisty jsem (drtiva vetsina kodu), tak nemusim delat zadne opicky. Jako jiste, parkrat jsem zapomnel poresit typ z parametru v URL a to jsem se pak divil, protoze
Kód: [Vybrat]
"0" === 0jaksi nefunguje. Nevim, mozna je to i tim, ze + pro retezeni pouzivam minimalne, protoze davam prednost template strings (zvyk ze Scaly):
Kód: [Vybrat]
let text = `${name}: ${value}`;Plus obcas pouziji i _.template a tam take neni problem s nejednoznacnym +.
Kód: [Vybrat]
a = _.template('x<%=a%><%=b%>y');
a({a:1, b:1}); // "x11y"


Re:Má Haskell budoucnost?
« Odpověď #286 kdy: 17. 05. 2016, 10:25:47 »
Například sčítání dvou 2D vektorů na povrchu Země.
To je pořád komutativní, ne?

U plus mě taky nic nenapadá, ale u součinu už ano ;)
U součinu jo, třeba násobení matic žejo. Ale to beztak vzniklo tak, že nějakýho poťapanýho matematika nenapadlo nic lepšího, než pro něj použít stejnej symbol a pak už se s t tím nic nedalo dělat. Matematici vůbec se symboly pracují dost volně a kreativně ;) Jako člověka odchovanýho programováním mě v matice vždycky rozčilovalo, jak se občas někde vypustí nějakej index, protože "všichni ví, že se tím myslí ...." :)


Re:Má Haskell budoucnost?
« Odpověď #287 kdy: 17. 05. 2016, 10:30:33 »
V JS chvili delam, ale na tento konkretni problem jsem snad nenarazil.
Třeba operátor == se chová extrémně nepředvídatelně. Ale těch haluzí je tam víc. Skoro všechno z http://charlieharvey.org.uk/page/javascript_the_weird_parts je případ nekonzistentní sémantiky.

Re:Má Haskell budoucnost?
« Odpověď #288 kdy: 17. 05. 2016, 10:36:03 »
Například sčítání dvou 2D vektorů na povrchu Země.
To je pořád komutativní, ne?

Na kouli jo. Na necem jinem od oka uz byt nemusi (predstav si trojuhelnik scitani vektoru na kouli s propasti/dolikem. Kdyz jedna z cest jde skrz dolik a akternativa ne, tak se to, alespon rika moje intuice, nenascita.)

Re:Má Haskell budoucnost?
« Odpověď #289 kdy: 17. 05. 2016, 10:41:29 »
Na kouli jo. Na necem jinem od oka uz byt nemusi (predstav si trojuhelnik scitani vektoru na kouli s propasti/dolikem. Kdyz jedna z cest jde skrz dolik a akternativa ne, tak se to, alespon rika moje intuice, nenascita.)
K prostoru s ďolíky jsem se v matice nedostal, tak nevím ;) Intuitivně mi přijde, že v prostoru, který je sem tam "zhuštěný" nebude platit skoro nic :)


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #290 kdy: 17. 05. 2016, 10:44:23 »
V JS chvili delam, ale na tento konkretni problem jsem snad nenarazil.
Třeba operátor == se chová extrémně nepředvídatelně. Ale těch haluzí je tam víc. Skoro všechno z http://charlieharvey.org.uk/page/javascript_the_weird_parts je případ nekonzistentní sémantiky.

A neni nahodou good practise ho nepouzivat? Napr. na projektu, na kterem ted pracuji, je nastaveny linter tak, aby pri prekladu vyhazoval == jako warning.

Re:Má Haskell budoucnost?
« Odpověď #291 kdy: 17. 05. 2016, 10:47:13 »
A neni nahodou good practise ho nepouzivat? Napr. na projektu, na kterem ted pracuji, je nastaveny linter tak, aby pri prekladu vyhazoval == jako warning.
Asi jo, ale to je právě proto, že má sémantiku doprasenou až k úplné nepoužitelnosti. Nicméně ani s === nemáš vyhráno:
Kód: [Vybrat]
js> true+true===2
true
js> true-true===0
true
js>true===1     
false
(ze stejného článku)

v

Re:Má Haskell budoucnost?
« Odpověď #292 kdy: 17. 05. 2016, 10:58:23 »
Například sčítání dvou 2D vektorů na povrchu Země.
To je pořád komutativní, ne?

Na kouli jo. Na necem jinem od oka uz byt nemusi (predstav si trojuhelnik scitani vektoru na kouli s propasti/dolikem. Kdyz jedna z cest jde skrz dolik a akternativa ne, tak se to, alespon rika moje intuice, nenascita.)
zkuste místo pravítka použít krejčovský metr

Kit

Re:Má Haskell budoucnost?
« Odpověď #293 kdy: 17. 05. 2016, 10:59:39 »
Na kouli jo. Na necem jinem od oka uz byt nemusi (predstav si trojuhelnik scitani vektoru na kouli s propasti/dolikem. Kdyz jedna z cest jde skrz dolik a akternativa ne, tak se to, alespon rika moje intuice, nenascita.)
K prostoru s ďolíky jsem se v matice nedostal, tak nevím ;) Intuitivně mi přijde, že v prostoru, který je sem tam "zhuštěný" nebude platit skoro nic :)

Proto jsem psal "obecně". Později jsem dodal, že v Euklidovském prostoru (který je podmnožinou obecného) komutativita sčítání platí.

Pokud stojíš na rovníku a vydáš se nejprve 5000 km na sever a pak 5000 km na východ, tak se dostaneš do jiného místa, než když jdeš nejprve 5000 km na východ a pak teprve 5000 km na sever.

Když budeš mít 3D prostor zakřivený přítomností hmoty, tak to také nebude komutativní. Ale to už je o něco hůře představitelné, proto jsem uvedl příklad se Zemí, kde jsem jeden rozměr ubral.

Re:Má Haskell budoucnost?
« Odpověď #294 kdy: 17. 05. 2016, 11:14:44 »
Pokud stojíš na rovníku a vydáš se nejprve 5000 km na sever a pak 5000 km na východ, tak se dostaneš do jiného místa, než když jdeš nejprve 5000 km na východ a pak teprve 5000 km na sever.
Máš pravdu, to jsem si neuvědomil, že jakmile tu kouli aspoň jednou obkroužíš, tak už to nevychází. (EDIT: blbost!)

No, každopádně je otázka, jestli se dá mluvit o "zobecnění". To bysme taky museli říct třeba že "zobecněné" rovnoběžky se můžou protínat, "zobecněný trojúhelník" může mít nulový obsah a tak...

V principu si asi vždycky můžeš vymyslet nějaký haluzoidní prostor, kde něco přestane platit, takže pak by "obecně" nebyla pravda nic, ne?
« Poslední změna: 17. 05. 2016, 11:19:26 od Mirek Prýmek »

BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Má Haskell budoucnost?
« Odpověď #295 kdy: 17. 05. 2016, 11:16:19 »
ale ten můj prvotní kód je pro typy co se dají sčítat!
naopak ten váš kód není, vždyť pro sčítání platí a+b=b+a, platí to u toho vašeho?
Tohle je krásný příklad problému s duck-typing, to budu používat.

Re:Má Haskell budoucnost?
« Odpověď #296 kdy: 17. 05. 2016, 11:18:42 »
Máš pravdu, to jsem si neuvědomil, že jakmile tu kouli aspoň jednou obkroužíš, tak už to nevychází.
Jo vlastně ty myslíš i bez obkroužení. Jsem dneska nějakej mimo, zastřelte mě někdo! :)))

v

Re:Má Haskell budoucnost?
« Odpověď #297 kdy: 17. 05. 2016, 11:20:16 »
Pokud stojíš na rovníku a vydáš se nejprve 5000 km na sever a pak 5000 km na východ, tak se dostaneš do jiného místa, než když jdeš nejprve 5000 km na východ a pak teprve 5000 km na sever.
Máš pravdu, to jsem si neuvědomil, že jakmile tu kouli aspoň jednou obkroužíš, tak už to nevychází.

No, každopádně je otázka, jestli se dá mluvit o "zobecnění". To bysme taky museli říct třeba že "zobecněné" rovnoběžky se můžou protínat, "zobecněný trojúhelník" může mít nulový obsah a tak...

V principu si asi vždycky můžeš vymyslet nějaký haluzoidní prostor, kde něco přestane platit, takže pak by "obecně" nebyla pravda nic, ne?
hlavně ale interpretace toho co vektor znamená nemá vliv na sčítání vektorů, asi

BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Má Haskell budoucnost?
« Odpověď #298 kdy: 17. 05. 2016, 11:20:35 »
Proto jsem psal "obecně". Později jsem dodal, že v Euklidovském prostoru (který je podmnožinou obecného) komutativita sčítání platí.
No, pokud si pamatuju dobře, tak na základce nás učili, že čtverce, trojúhelníky, a všechny tyhlencty věci platí pro Euklidovský prostor. Takže tahat do toho cokoliv jiného je provokace. No a komutativita pro plus je obecná. Že ti vychází různé výsledky podle toho, zda ji pak používáš v tom či onom prosotru je tvá chyba.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #299 kdy: 17. 05. 2016, 11:29:14 »
Například sčítání dvou 2D vektorů na povrchu Země.
To je pořád komutativní, ne?
Jasně, že to je komutativní, sčítání vektorů ostatně vůbec nezávisí na okolním prostoru, to se učí snad už na základce (kterou Kit, podle toho, jak se tu projevuje, evidentně nedokončil). Na kouli je nekomutativní skládání paralelních přenosů tečných vektorů, to ale vůbec nesouvisí se sčítaním a je to docela pokročilý koncept v diferenciální geometrii.