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 - BoneFlute

Stran: 1 ... 82 83 [84] 85 86 ... 133
1246
Vývoj / Re:Dědičnost funkcionálně
« kdy: 13. 07. 2018, 20:37:43 »
a už jsi u code reusability :-D aby z toho BoneFlute netrefil šlak
Jemu nevadí "code reusability" per se, ale zneužití dědičnosti ke "code reusability".
Přesně tak.

Dědičnost ve smyslu množin: Byte je speciální případ Integeru, ten je speciální případ Numberu - to je dědičnost naprosto v pořádku. Ale je to dost umělý příklad, a je otázka, jak by to "fungovalo". Na druhou stranu, v drtivém množství případů použiješ spíše třídy, a ty Haskell má.

1247
Vývoj / Re:Dědičnost funkcionálně
« kdy: 13. 07. 2018, 16:04:08 »
To zní děsivě povědomě!
Pokus o flame? Kratší program je přehlednější a vesměs efektivnější.
Vo tom žádná. Já narážím spíše na obecně rozšířenou praxi OOP vývojářů, kteří dědičnost používají zhusta čistě za účelem reusable kódu. Což mi doufám uznáš, že je děsivé.
Já bych tady OOP vůbec nezmiňoval. I když je pravda, že jakmile se dostaneme k podtypům funkcí, narazíme na varianci, což se obvykle používá jen v OO kontextu. Nicméně právě ta kategoriální interpretace naznačuje, že jde o koncept funkcionální (viz λ-kostka).
Já OOP uváděl jen a pouze jako příklad zvrhnutí se dědičnosti. Tedy jsem se pouze ptal, zda by se v Haskellu nestalo něco podobného. Jinak mě OOP (v tomto kontextu) zas až nezajímá.

1248
Vývoj / Re:Který PHP framework je perspektivní
« kdy: 13. 07. 2018, 15:07:03 »
Mám rád Nette, ale poslední verzi 2.4 skončila podpora. Je ohlášená verze 3.0, ale kdy bude? Nette je krásný projekt na umření :(. Takže Laravel, nebo Symfony.
Bude na podzim.
To, že skončila podpora - David ujišťoval, že chyby, zvláště bezpečnostní, bude opravovat.
Neviděl bych to tak hrozně.

No ale jak to pak vypadá? Když ve firmě navrhnu, že se má nový projekt psát v Nette, tak mě tímhle argumentem umlátí.
Moc nerozumím. Začněte na poslední verzi, ne? To jest 2.4.
Je ohlášeno i Nette 4. To kůli tomu nepoužijete Nette 3 jen proto, že je naplánována i 4ka?

1249
Vývoj / Re:Dědičnost funkcionálně
« kdy: 13. 07. 2018, 15:04:13 »
To zní děsivě povědomě!
Pokus o flame? Kratší program je přehlednější a vesměs efektivnější.

Vo tom žádná. Já narážím spíše na obecně rozšířenou praxi OOP vývojářů, kteří dědičnost používají zhusta čistě za účelem reusable kódu. Což mi doufám uznáš, že je děsivé.

1250
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 13:43:40 »
Ja len tak, ze ci ten spagetovy festival s memory leakmi nechcete predvadzat v inom vlakne. Nereagujte na mna prosim.
Nevadí nám, že sem píšeš příspěvky. Nemělo by ti vadit, že my sem také píšeme příspěvky.
Ty tu určuješ pravidla komu může co vadit?

1251
Vývoj / Re:Dědičnost funkcionálně
« kdy: 13. 07. 2018, 13:40:27 »
Haskell je cisto funkcionalny, tam by som rozhodne dedicnost netahal a ani o nej nerozmyslal (typove triedy su nieco ine).
Čistě funkcionální není, má kupříkladu závislostní typy.
Můžeš ukázat jak závislostní typy poškodí referenční transparentnost?
Nemůžu. Ani jsem to netvrdil.
Možná ti to nedošlo, ale pojem čistě funkcionální  == referenční transparentnost. Tak jak jsi to tedy myslel? Proč by neměl být Haskell čistě funkcionální?

Proč by nemohl mít podtypy, když má všechny předpoklady (jednotkový typ, pravdivostní objekt)? Normálně by stačila syntaktická podpora pro klasifikátor podobjektů. Haskellisti sice někdy vymýšlejí šílené kraviny (viz derivace typů pro zippery), ale v tomto případě by byl dopad i praktický.
Tak v OOP má dědičnost dopad vysloveně tragický.

ušetřila psaní kódu.
To zní děsivě povědomě!


ale je-li zájem o diskusi, podívejme se na nějaké příklady.
Za mě jo. Máš-li co, ukaž.

1252
Vývoj / Re:Který PHP framework je perspektivní
« kdy: 13. 07. 2018, 13:19:34 »
Mám rád Nette, ale poslední verzi 2.4 skončila podpora. Je ohlášená verze 3.0, ale kdy bude? Nette je krásný projekt na umření :(. Takže Laravel, nebo Symfony.
Bude na podzim.
To, že skončila podpora - David ujišťoval, že chyby, zvláště bezpečnostní, bude opravovat.
Neviděl bych to tak hrozně.

1253
Vývoj / Re:Dědičnost funkcionálně
« kdy: 13. 07. 2018, 13:08:52 »
Haskell je cisto funkcionalny, tam by som rozhodne dedicnost netahal a ani o nej nerozmyslal (typove triedy su nieco ine).
Čistě funkcionální není, má kupříkladu závislostní typy.
Můžeš ukázat jak závislostní typy poškodí referenční transparentnost?


Proč by nemohl mít podtypy, když má všechny předpoklady (jednotkový typ, pravdivostní objekt)? Normálně by stačila syntaktická podpora pro klasifikátor podobjektů. Haskellisti sice někdy vymýšlejí šílené kraviny (viz derivace typů pro zippery), ale v tomto případě by byl dopad i praktický.
Tak v OOP má dědičnost dopad vysloveně tragický. Třeba (třeba ne) by to mělo nějaké nešikovné důsledky.

1254
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 13:04:51 »
Pro původního autora:

void Kresli ()
{
 .. nějaký ten kód
if (nějaká podmínka)
vyfuň z funkce ..

}

na místo "vyfuň z funkce" jsem zkoušel dát break; ale překladači se to nelíbilo, jako že "illegal break".
Tak jsem dal return;, ten se provedl, ale vytuhnul mi celý program.
Jak mohu opustit tu funkci Kresli, aby program pokračoval za místem, odkud byla Kresli zavolána?
Z funkce můžeš vyfunět pouze pomocí:
- kód doputuje až do konce (týká se jen procedur)
- pomocí return
- pomocí výjimky

Technicky ještě můžeš ukončit celej program pomocí exit, a možná by se našel i další způsob - ale to obecně neřeš a drž se  předchozího seznamu.

return a výjimka ti vyfuní z libovolně zanořeného výrazu. break, continue, etc je součástí struktur switch, while, for.

1255
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 12:54:27 »
Skratka, veci ako break, continue, goto by sa mali pouzivat v stave najhorsej nudze. Procedura by mala mat podla moznosti len jeden return.
Kód: [Vybrat]
def foo (xs):
    assertList(xs) # vyhodí výjimku
    if isEmpty(xs):
        return 0     # speciální hodnoty ukončíme předčasně
    val = fetchDefaultValueFromDB()
    for x in xs:
        val = val + x
    return val

1256
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 12:38:33 »
Ne, to není ani náhodou, protože:
1) řetězec if-else nad enumem (třeba stavy ve stavovým automatu) nehlídá, že je některý stav neošetřený. Switch aspoň hodí warning, pokud vyhodíš DEFAULT (další synonymum pto GOTO).
To hódně záleží na jazyku. S goto to vůbec nesouvisí.

2) Přepiš pomocí switche bez jakýhokoliv IFu následující kód (pokud je SWITCH rozšířením IFu, neměl by to být problém):
Kód: [Vybrat]
if(a == 5) {
  akce1();
} else if(b == 7) {
  akce2();
} else if((c > 0x07) && (c <= 0xf3) {
  akce3();
} else  {
  akce4();
}
Kód: [Vybrat]
switch (True) {
  case (a == 5):
    akce1();
    break;
  case (b == 7):
    akce2();
    break;
  case ((c > 0x07) && (c <= 0xf3)):
    akce3();
    break;
  default:
    akce4();
}

3. Dovoluje pass through z jedné větve do druhé, to bez něj dáš jenom s GOTO nebo nepřehledným chaosem a opakovaným vyhodnocováním (= drahý, zahazuješ zbytečně pipeline).
Záleží na jazyku.
V mnoha případech to naopak zpřehledňuje.

Prostě IF != SWITCH a programátor ví, kdy co použít.
Tak to každopádně.

Pokud to zaměňuješ, jsi fakt dřevo.
Odpusť si ty invektivy.

Zásadní rozdíl mezi IF a SWITCH je v tom, že IF je binární, zatímco SWITCH je na enum. A vzhledem k tomu, že bool je taky enum, tak má balki do určité míry pravdu.

1257
Vývoj / Re:Který PHP framework je perspektivní
« kdy: 12. 07. 2018, 18:52:07 »
Proč raději Symfony a Laravell a ne Nette? Jak už bylo párkrát zmíněno, je to one man show a když zrovna D.G. nemá náladu, tak to vypadá asi nějak takhle https://github.com/nette/utils/pull/174.
Tak ona zrovna Symfony o tolik lepší není :-)

1258
Vývoj / Re:Jak můžu opustit funkci
« kdy: 12. 07. 2018, 18:51:04 »
Ovšem je hloupé, když chce být někdo purista a puntičkář, a zamotá break mezi způsoby, jak v C ukončit funkci. Čtenář pak totiž může pochybovat, jestli dotyčný vůbec umí programovat…
Normálního člověka to nenapadne. Normální člověk chápe, že chtěl předat myšlenku. Normální člověk neprudí... oh wait!

1259
Vývoj / Re:Dědičnost funkcionálně
« kdy: 12. 07. 2018, 15:38:49 »
Šlo mi o to, jak se klasifikují matematicky. Například monády jsou funktory (splňující nějaké podmínky navíc), tak jestli je nějaký čistě formální koncept, jehož reflexí je v praxi dědičnost. Bohužel ten matematický aparát nijak podrobně neznám.
Množiny a podmnožiny?

Čísla -> Celá čísla -> Rozsah celých čísel.

Ale vlastní podtypovou dědičnost v Haskellu neumím. (Třídy jo, ale to je něco jiného.)

1260
Vývoj / Re:Syntaxe Haskell funkce
« kdy: 11. 07. 2018, 19:56:30 »
najdi si na wiki co je to Eta redukce
a neco o lambda funkcich

jinak https://wiki.haskell.org/Eta_conversion

takze tve:

Kód: [Vybrat]
f a = a + 1

je plne equivaletni k:

Kód: [Vybrat]
f = (+) 1
Ah, znám, ale nedošlo mi. Jasný, díky.

Stran: 1 ... 82 83 [84] 85 86 ... 133