Má Haskell budoucnost?

Wichser

Re:Má Haskell budoucnost?
« Odpověď #480 kdy: 18. 09. 2018, 13:44:30 »
když pak potřebuješ použít třeba paramorfismus, tak to najednou značně ulehčí život...
Pojem "paramorfismus" použije tak akorát někdo, kdo si chce honit ego (žeby nějaký komplex?). Přitom jde o prachsprosté reduce.
Pojem "paramorfismus" použije někdo, kdo má matematický background. Pojem "reduce" je obecnější a vágnější. Spadá pod něj víc druhů morfismů, nejen ten para.
Evidentně nejen. Navíc zrovna tyhle "morfismy" nemají s matematikou mnoho společného, pochází z CS.


andy

Re:Má Haskell budoucnost?
« Odpověď #481 kdy: 18. 09. 2018, 13:49:28 »
Citace
Introspekci C++ umí. Akorát se tomu tam říká RTTI.
Co jsem pochopil, tak RTTI akorát umí dotaz "je tohle typu X"? (což zrovna haskell bez typeclassy neumí...) Nebo umí i něco typu "co je v téhle třídě", takže se to dá použít třeba na nějakou automatickou JSON serializaci? (já fakt nevím)

Citace
Kde se v praxi kromě typových tříd používají HKT?
V praxi všude, kde se vyskytují slova "Functor", "Applicative", "Monad" a další, myslím, že třeba "lens" to taky využívá dost. Teď nově to začali používat v některých SQL knihovnách, z čehož mám trošku smíšené pocity (přijde mi to trošku jako hack..ale zatím jsem to prakticky nezkusil). Způsob práce s HKT je pak přes typové třídy, protože to jinak moc nejde, takže moc nechápu tu otázku.

Citace
Zrovna v C++ jde tohle jednoduše pomocí konceptů
...což je poměrně nový "koncept" pravděpodobně inspirovaný typeclassama z haskellu..? (jestli to dobře chápu...)

Citace
Pojem "paramorfismus" použije tak akorát někdo, kdo si chce honit ego (žeby nějaký komplex?). Přitom jde o prachsprosté reduce.
Tak já to používám nikoliv proto, že bych měl matematický background, ale protože ten termín používali lidi v těch článcích, tak se držím názvosloví... akorát, že já si teda pod pojmem "praschsprostá redukce" nepředstavím funkci typu "(f a -> a) -> Fix f -> a". Ale možná že 90% programátorů jo, a ta idea, že tohle není úplně jednoduchý téma na pochopení je vlastně jenom moje vlastní neschopnost, přiznávám, že když jsem tu signature viděl poprvé, tak jsem vůbec nechápal, jak něco takovýho může fungovat....

andy

Re:Má Haskell budoucnost?
« Odpověď #482 kdy: 18. 09. 2018, 13:59:45 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?

Wichser

Re:Má Haskell budoucnost?
« Odpověď #483 kdy: 18. 09. 2018, 14:01:58 »
Způsob práce s HKT je pak přes typové třídy, protože to jinak moc nejde
To je jen jedno z omezení Haskellu. Nicméně časem třeba jeho typový systém vylepší.

andy

Re:Má Haskell budoucnost?
« Odpověď #484 kdy: 18. 09. 2018, 14:06:01 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
A odpovídám si: praktické je, ale ne bez typeclass, protože mi tam chybí "Functor f" constraint...


andy

Re:Má Haskell budoucnost?
« Odpověď #485 kdy: 18. 09. 2018, 14:06:38 »
Způsob práce s HKT je pak přes typové třídy, protože to jinak moc nejde
To je jen jedno z omezení Haskellu. Nicméně časem třeba jeho typový systém vylepší.
:o

Wichser

Re:Má Haskell budoucnost?
« Odpověď #486 kdy: 18. 09. 2018, 14:07:13 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
To není HKT. Jaký má být kind?

Wichser

Re:Má Haskell budoucnost?
« Odpověď #487 kdy: 18. 09. 2018, 14:08:00 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
A odpovídám si: praktické je, ale ne bez typeclass, protože mi tam chybí "Functor f" constraint...
To taky, ale nechtěl jsem slovíčkařit.

andy

Re:Má Haskell budoucnost?
« Odpověď #488 kdy: 18. 09. 2018, 14:10:11 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
To není HKT. Jaký má být kind?
Kind f je "Type -> Type".

Wichser

Re:Má Haskell budoucnost?
« Odpověď #489 kdy: 18. 09. 2018, 14:12:56 »
Způsob práce s HKT je pak přes typové třídy, protože to jinak moc nejde
To je jen jedno z omezení Haskellu. Nicméně časem třeba jeho typový systém vylepší.
:o
Co to znamená? Nemáš slov? V jiných jazycích s HKT je typový systém mnohem silnější a flexibilnější, dají se psát funkce a struktury s typovými operátory -> a =, prostě HKT bez omezení. Tím neříkám, že je to praktické, typové třídy jsou mnohdy čitelnější, ale aspoň to jde.

Wichser

Re:Má Haskell budoucnost?
« Odpověď #490 kdy: 18. 09. 2018, 14:15:42 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
To není HKT. Jaký má být kind?
Kind f je "Type -> Type".
Ano. A kind "f a"? A kind "Fix f"? Celé to pak pochopitelně není HKT, stačí si to rozepsat.

andy

Re:Má Haskell budoucnost?
« Odpověď #491 kdy: 18. 09. 2018, 14:21:45 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
To není HKT. Jaký má být kind?
Kind f je "Type -> Type".
Ano. A kind "f a"? A kind "Fix f"?
Teď nerozumím... to zdůvodnění jsem samozřejmě napsal blbě, protože celá ta funkce je:
Kód: [Vybrat]
cata :: Functor f => (f a -> a) -> Fix f -> a, kde Functor je (Type -> Type) -> Type, což je HKT.

Citace
Celé to pak pochopitelně není HKT, stačí si to rozepsat.
Ptal jsi se na pratkické použití HKT. Chceš tím říct, že výše uvedenou funkci lze implementovat bez HKT?

andy

Re:Má Haskell budoucnost?
« Odpověď #492 kdy: 18. 09. 2018, 14:28:50 »
Teď nerozumím... to zdůvodnění jsem samozřejmě napsal blbě, protože celá ta funkce je:
Kód: [Vybrat]
cata :: Functor f => (f a -> a) -> Fix f -> a, kde Functor je (Type -> Type) -> Type, což je HKT.
Resp. v haskellu "(* -> *) -> Constraint", ale prostě to je HKT :)

andy

Re:Má Haskell budoucnost?
« Odpověď #493 kdy: 18. 09. 2018, 14:36:35 »
No a kind Fix je:
Kód: [Vybrat]
Fix :: (* -> *) -> *což je HKT i bez typeclassy....

Wichser

Re:Má Haskell budoucnost?
« Odpověď #494 kdy: 18. 09. 2018, 14:37:01 »
Kód: [Vybrat]
(f a -> a) -> Fix f -> aBtw, není tohle praktické použití HKT? A dokonce bez typeclass?
To není HKT. Jaký má být kind?
Kind f je "Type -> Type".
Ano. A kind "f a"? A kind "Fix f"?
Teď nerozumím... to zdůvodnění jsem samozřejmě napsal blbě, protože celá ta funkce je:
Kód: [Vybrat]
cata :: Functor f => (f a -> a) -> Fix f -> a, kde Functor je (Type -> Type) -> Type, což je HKT.
Ano, teď už to je HKT, v té haskellovské omezené formě s =>.