Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: A. F. 07. 02. 2017, 15:13:27

Název: Rozdíl mezi „type“ vs. „data type“
Přispěvatel: A. F. 07. 02. 2017, 15:13:27
Ahoj.

Při čtení https://en.wikipedia.org/wiki/First-class_citizen jsem narazil na rozlišení "first-class type" a "first-class data type". Nic moc jsem o tom dál nedočetl. Můžete mi vysvětlit jaký je v tom rozdíl? Jaký je vlastně rozdíl mezi "type" versus "data type"?

Díky.
Název: Re:"type" versus "data type"
Přispěvatel: v 07. 02. 2017, 15:22:18
Ahoj.

Při čtení https://en.wikipedia.org/wiki/First-class_citizen jsem narazil na rozlišení "first-class type" a "first-class data type". Nic moc jsem o tom dál nedočetl. Můžete mi vysvětlit jaký je v tom rozdíl? Jaký je vlastně rozdíl mezi "type" versus "data type"?

Díky.
podle sloupku "Languages" bych si tipnul, že "type" je obecnější než "data type" a může zahrnovat i typy funkcí (např. Int -> String) ne jen typy prostých dat (In, String, data Něco = Něco Int)
Název: Re:"type" versus "data type"
Přispěvatel: Sten 07. 02. 2017, 16:34:32
Přesně tak. Data type (datový typ) je obecně typ obsahující nějakou hodnotu. Typ je obecně jakýkoliv druh objektu, což kromě datových typů může být typ rozhraní, typ reference, typ funkce, typ příslibu (future), metatřídy, ve Smalltalku třeba i všechny výrazy jsou typu zprávy. Ta hranice je ale dost nejasná, třeba jsou třídy datový typ nebo ne? Jsou kompozitní a obsahují datové i nedatové části. Je typ ukazatele datový nebo ne? V jazycích s ukazatelovou aritmentikou se chová jako datový typ, v jazycích bez ní ne.
Název: Re:Rozdíl mezi „type“ vs. „data type“
Přispěvatel: Polymath 14. 02. 2017, 10:03:21
Ahoj.

Při čtení https://en.wikipedia.org/wiki/First-class_citizen jsem narazil na rozlišení "first-class type" a "first-class data type". Nic moc jsem o tom dál nedočetl. Můžete mi vysvětlit jaký je v tom rozdíl? Jaký je vlastně rozdíl mezi "type" versus "data type"?

Díky.
Na Wiki to nijak přesně definováno není, nicméně v teorii typů je datový typ vše, co se dá derivovat (převést na zipper), takže jde o typy reprezentující nějakou množinu, případně relaci. Pod pojmem "typ" tam nejspíš myslí generický typ, což může být nějaký funktor nebo bifunktor (či obecně n-funktor) s variancí parametrů. Typ bez dat (nereprezentující nějakou množinu) je jen rozhraní. V té terminologii je zmatek a každý si to může vykládat různě, takže je asi lepší naučit se prostě koncepty.