infer voor statements
[cc1516.git] / ontwerpbesluiten.txt
index 4c245aa..b65b74a 100644 (file)
@@ -4,4 +4,24 @@ Waarom?
 Mooiere puurdere lambda-calculus. Is chill straks met hogere orde functies (denken we)
 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.
\ No newline at end of file
+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
+
+
+---
+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