type versus data type rubrika: Programování: Jiné

2 Andreaw Fean
položil/-a 7.2. 2:57

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? A jaký je vlastně rozdíl mezi "type" versus "data type"?

Díky.

odkaz
15 Honza Břešťan
odpověděl/-a 7.2. 10:07
 
upravil/-a 7.2. 10:53

Ta wiki stranka je hrozny bordel, staci se podivat do historie editu... Bezne se pod pojmem type a data type mysli to same, takze chapu to zmateni. Vyjimkou muzou byt konkretni jazyky, treba v Haskellu dela trochu chaos rozliseni keywordu "type" a "data", i kdyz oboji vytvori "novy typ". Pripadne to muze slouzit k rozliseni pojmu typ v kontextu type theory a nejake reprezentace dat v programu, ale to asi jen v hodne konkretni diskusi.

Kdyz z te wiki ale vyjdu, tak hadam, ze tim autori mysleli nasledujici:

First-class type znamena, ze muzes samotny typ pouzit primo jako vyraz. Ne instanci nebo hodnotu toho typu, nebo nejakou referenci na reprezentaci typu, ale primo ten typ. Prakticky dusledek jsou v uvedene Idris dependent types a v Coqu Prop (to jsem ted vygooglil, moje znalost Coqu je nula). V zasade jde o to, ze pak jde ten typ samotny parametrizovat jinym vyrazem a staticky type checking tim ziska celkem silnou novou zbran.

First-class data type jsou generics, typy paremetrizovane typem, ale pravdepodobne se tim v kontextu toho clanku mysli nejaka jejich silnejsi manipulace, nez prosta existence generics jako v Jave nebo C#, nebo higher-kinded polymorphism v klasickem Haskellu nebo Scale.

Celkove mi ale ta tabulka prijde dost sporna, uz jen tim, ze "first-class citizenship" je komparativni pojem, ne jasne definovana vlastnost. Pak se muzeme donekonecna bavit, jestli jsou data types "dostatecne first-class" v JVM, nebo je erasure takovej hack, ze jsou "first-class" az v .NETu, nebo jsou potreba higher-kinded typy jako v Haskellu, nebo je potreba v GHC zapnout podporu GADT, nebo je ma "opravdu first-class" az ten Generic Haskell...

Osobne bych se tomu first-class skatulkovani vyhnul

Komentáře

  • Andreaw Fean : To First-class něco bych snad i pochopil. Zajímá mě ten rozdíl mezi "type" versus "data type". 7.2. 15:12
  • Honza Břešťan : No, na to to snad odpovida taky. Pokud jde o "type" vs. "data type" uplne obecne, plati prvni odstavec. Zbytek je v kontextu te wiki page, protoze podle prvniho odstavce zalezi na tom kontextu. 7.2. 15:43

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.