11

różnych językach programowania, z jaką się spotkałem podobnego composite types różnymi nazwami:Co to są "rodzaje słownictwa" i ile istnieje?

  1. Optional/Maybe
  2. Any
  3. Variant/Sum
  4. Record/Product

Ludzie często używają terminu rodzaj słownictwa ,
Jeszcze nigdy nie widziałem definicji tego, co tworzy "słownictwo" typu.

Czy to pojęcie ma luźną definicję?
Co teoria typów i inne języki programowania mają do powiedzenia na temat rodzajów słownictwa?

Czy wszystko jest powyżej słownika? Czy jest ich więcej?

+8

Czy możesz podać linki/cytaty dla terminu "typ słownictwa" używanego w kontekście? Nigdy wcześniej tego nie widziałem i jestem ciekawy, czy pomogłoby to w lepszym przygotowaniu odpowiedzi. Są to głównie [typy danych algebraicznych] (https://en.wikipedia.org/wiki/Algebraic_data_type). –

+0

Jak powiedział Jon, gdzie widziałeś używany typ słownictwa w odniesieniu do tych terminów? Nie jest to coś, z czym się zetknąłem, nawet po przeprowadzeniu wyszukiwania w Internecie pod tym numerem: – Dijkgraaf

+0

pokaż nam referencje, ale myślę, że oznacza to, że istnieją różne rodzaje słowników odnoszących się do określonego typu! –

Odpowiedz

3

Moje rozumienie słownictwa w odniesieniu do programowania i rodzaju słownictwa w ogólności jest czymś, co nadaje niektórym obiektom właściwości o dobrze zdefiniowanym znaczeniu.

Oto kilka przykładów w Haskell:

Rozważmy Optional/Maybe rodzaj i czystą funkcję, która pobiera odpowiedzi HTTP serwera WWW i pobiera kod odpowiadać za.

getCode :: String -> Int 

Załóżmy teraz, że do czasu uruchomienia tej funkcji nie wiemy, czy odpowiedź się powiodła - kod może nie być obecny. Jak reprezentujemy przypadek, gdy brakuje kodu? Możemy przypisać jakąś wartość -1 sztucznego lub 0 czy możemy zmienić cały rodzaj funkcji to:

getCode :: String -> Maybe Int 

Ponadto Maybe tworzy Monad, Functor, Applicative, Foldable i kilka innych typeclasses w Haskell. Każda czcionka dodaje dodatkowe możliwości manipulowania wartością, przy jednoczesnym poszanowaniu jej obecności/nieobecności.

Product/Sum rodzaj w Haskell są reprezentowane jako pary i Either a b. Ponownie - zdefiniowanie czegoś przez Product lub Sum dodaje dobrze zdefiniowane znaczenie Product a b - obie wartości muszą być obecne, Sum a b - jedna wartość musi być obecna i dodaje kilka praw za darmo.

+0

Myślę, że w tej odpowiedzi brakuje trochę pytania, które brzmi: "co sprawia, że ​​słownictwo" jest "przeciwieństwem" tego, co robią te typy? ". – Alec

+0

'Dobrze zdefiniowane znaczenie to'.Dla tych, którzy znają terminologię matematyczną/programistyczną "Ta operacja w komutacyjnym i asocjacyjnym" mówi o tyle samo o operacji, co "Typ rzeczy" to "Może rzeczy". – user8242965