Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: phulas 17. 07. 2017, 16:42:54

Název: Algebraické typy v C++
Přispěvatel: phulas 17. 07. 2017, 16:42:54
Ahoj, potřebuji součtový typ, ale včetně RAII pro třídy, takže nemůžu použít union, jaký způsob byste doporučili jako nejefektivnější? (Ze zřejmých důvodů se mi moc nechce používat RTTI.)
Název: Re:Algebraické typy v C++
Přispěvatel: lopata 17. 07. 2017, 21:15:43
http://www.boost.org/doc/libs/1_64_0/doc/html/variant.html
Název: Re:Algebraické typy v C++
Přispěvatel: zboj 17. 07. 2017, 21:55:26
http://www.boost.org/doc/libs/1_64_0/doc/html/variant.html
Nebo variant z STL v C++17 (trochu se liší od toho z Boostu).
Název: Re:Algebraické typy v C++
Přispěvatel: x14 18. 07. 2017, 12:44:08
Co je to součtový typ?
Název: Re:Algebraické typy v C++
Přispěvatel: lopata 18. 07. 2017, 12:56:49
Co je to součtový typ?
https://en.wikipedia.org/wiki/Tagged_union
Název: Re:Algebraické typy v C++
Přispěvatel: Ondra Satai Nekola 18. 07. 2017, 13:00:02
Co je to součtový typ?

Tohle je klasicky priklad:

data List a = Nil | Cons a (List a)

(Typ "Seznam polozek libovolneho typu a" je bud Nil nebo zretezeni polozky typu a  seznamu polozek typu a. To svislitko muzes chapat jako sjednoceni variant.)

Typ se sklada z nekolika variant. Muzes uvazovat o otevrene variante, ale vetsinou se takhle mluvi o uzavrene variante (ty varianty jsou vyjmenovane predem a nemuzes si nejakou pridat v klientskem kodu).


Hezke uvodni cteni pro jeden konkretni jazyk najdes trebas v: http://haskellbook.com/
Název: Re:Algebraické typy v C++
Přispěvatel: x14 18. 07. 2017, 13:31:25
Kdyby tam padlo to slovo nějaká unie nebo variantní typ, tak mi to asi dojde, ale takhle  ;D
V každém případě díky!
Každý den se člověk učí.
Název: Re:Algebraické typy v C++
Přispěvatel: Kamil Podlešák 18. 07. 2017, 14:26:32
Kdyby tam padlo to slovo nějaká unie
Jo, a pak tady zase bude pět stránek na téma tyranie Bruselu...

Název: Re:Algebraické typy v C++
Přispěvatel: Ondra Satai Nekola 18. 07. 2017, 14:32:29
Kdyby tam padlo to slovo nějaká unie
Jo, a pak tady zase bude pět stránek na téma tyranie Bruselu...

To si nepomuzes, "algebra" je zase muslimska infiltrace :-D
Název: Re:Algebraické typy v C++
Přispěvatel: zboj 18. 07. 2017, 15:03:39
Kdyby tam padlo to slovo nějaká unie
Jo, a pak tady zase bude pět stránek na téma tyranie Bruselu...
Jo, a svaz (type lattice) evokuje CCCP...
Název: Re:Algebraické typy v C++
Přispěvatel: UF 18. 07. 2017, 15:30:43
Každý den se člověk učí.
to je ale optimismus!
Název: Re:Algebraické typy v C++
Přispěvatel: kimec 19. 07. 2017, 02:33:18
Kdyby tam padlo to slovo nějaká unie
Jo, a pak tady zase bude pět stránek na téma tyranie Bruselu...
Jo, a svaz (type lattice) evokuje CCCP...
Unia je svaz - teda aspon ta europska. Len sa preferuje modernejsi nazov unia, aby sa u obyvatelstva V4 neprebudzal negativny sentiment asociovany s CCCP. Pekna instancia newspeaku v praxy.
Název: Re:Algebraické typy v C++
Přispěvatel: Ondra Satai Nekola 19. 07. 2017, 10:41:51
Kdyby tam padlo to slovo nějaká unie
Jo, a pak tady zase bude pět stránek na téma tyranie Bruselu...
Jo, a svaz (type lattice) evokuje CCCP...
Unia je svaz - teda aspon ta europska. Len sa preferuje modernejsi nazov unia, aby sa u obyvatelstva V4 neprebudzal negativny sentiment asociovany s CCCP. Pekna instancia newspeaku v praxy.

No dalo se cekat, ze se toho nakonec nekdo chyti... Posluz si a pokracuj s tou algebrou.
Název: Re:Algebraické typy v C++
Přispěvatel: Aoidhghean 06. 08. 2017, 21:09:07
Co je to součtový typ?
To je snad základ z prvního ročníku, ne? V matice je to disjoint union.