Je otazka, zda objekt je opravdu hodnota, ale dobre, opravuji formulaci na 'kde i informace o jednoduchem datovem typu je soucasti hodnoty.
Rozdělení na hodnotové nehodnotové typy je IMHO taková bolest mutabilních jazyků. V haskellu je všechno hodnota: číslo, text, pole, funkce, ... Většina věcí tam je first-class. Takže když prohlásíme, že sturktura je objekt, tak ano, i v takovém případě by to byla hodnota.
Takze kdyz v pythonu, php a pod vyuziji type hinting, a datove typy zkontroluji pri prekladu, udelal jsem z nej staticky typovany jazyk?
Skoro. Určitě to pomůže odchytit velkou fůru potenciálních chyb. Ale type-hinting bude furt slabej proti plnohodnotnému statickému systému.
Například takovouto chybu ti to neodhalí (omlouvám se za případné hrubky, v pythony type-hinting ještě neumím používat).
class ContactForm:
def __init__(self):
self.name = none
self.age = none
def assetContactForm(ContactForm form, string name, int age):
form.name = name
form.birth = age
return form
Takze kdyz v pythonu, php a pod vyuziji type hinting, a datove typy zkontroluji pri prekladu, udelal jsem z nej staticky typovany jazyk? Myslim ze ne a to prave proto, ze informace o typu je soucasti hodnoty, nikoliv promenne. To je podle me zakladni rozdil, nikoliv cas kontroly.
V Haskellu (a myslím, že to tak platí u většiny modernějších jazyků) je typ součást hodnoty:
sum :: Int -> Int -> Int
sum a b = a + b
inc a = a + 1
dump (sum (inc 4) (inc 5.5))