X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=ontwerpbesluiten.txt;h=b65b74a7717bd9726b5c973cf01229a204cfe231;hb=b8aaa94f98ffb9bb18d6b1f2ba91ee81f0fdc0b9;hp=8cbcf17e218b41b5a2b5ea1c62be1d8ee2a20e3d;hpb=4f162814483aa0ab4e11cab51e23f807bece906c;p=cc1516.git diff --git a/ontwerpbesluiten.txt b/ontwerpbesluiten.txt index 8cbcf17..b65b74a 100644 --- a/ontwerpbesluiten.txt +++ b/ontwerpbesluiten.txt @@ -6,8 +6,22 @@ Staat mooie shizzle zoals in Haskell toe (f :: a -> a, g :: a -> a, f = g) Simpeler om te parsen Con: wellicht kut met code generatie, wie weet. --- +--- Functies en variabelen delen 1 namespace. Dat is met het oog op hogere orde functies, dan kan een parameter voor een functie een andere functie zijn, of een variabele en als die 2 aparte namespaces hebben is dat moeilijk onduidelijk / -praktisch onmogelijke met type inteference \ No newline at end of file +praktisch onmogelijke met type inteference + + +--- +Functies kunnen voor correct typechecken alleen functies gebruiken die DAARNA +gedefinieerd zijn + +— + +Globaal gedefinieerde dingen worden als constanten beschouwd. Enkel in functies gedefinieerde vars zijn mutable. Twee redenen: 1 we behouden onze programmeurs voor het gebruik van globale state, want dat is de wortel van het kwaad. Daarnaast past het goed bij dat _alles_ op top level een functie is. Als je zegt i = next x; en x wijzigt tussendoor en je checkt dan weer i dan wordt i opnieuw geevalueerd en dat levert dan dus een andere waarde op, en dat wil je niet. + + +— mbt code generation +—- +Bij callen is de callee verantwoordelijk voor het opslaan van de registers, indien nodig. Dit omdat _alles_ als function wordt gecalled, dus ook: i=4; b=i+1; levert een functiecall naar i op in de toewijzing van b. \ No newline at end of file