summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TypeAnalysis.md21
1 files changed, 20 insertions, 1 deletions
diff --git a/TypeAnalysis.md b/TypeAnalysis.md
index ee187cdf..c0086791 100644
--- a/TypeAnalysis.md
+++ b/TypeAnalysis.md
@@ -750,7 +750,7 @@ isHappy = { pet : Pet -> pet.eq("Happy") }
ERROR: No field `eq` on type Pet
```
-If we reverse the calling arguments:
+And if we reverse the calling arguments:
```java
isHappy = { pet : Pet -> "Happy".eq(pet) }
@@ -761,6 +761,25 @@ ERROR: function String.eq argument#1 must be a String
## Parametric Polymorphism
+**TODO**...
+
+This looks to me to be solved with **specialization** (cloning the analysis in
+any work should work, function inlining or function specialization are both
+ways to clone the analysis).
+
+Type var with the intent it becomes concrete - treat as bot/top, maybe not
+even need specialized name ?
+
+Trigger inline/specialize based on having concrete args to a function w/ type
+var (Parm with a default BOT type). After specialize, Parm with lift to the
+concrete and problem solved...
+
+Specialization will split FIDXs, will need to deal with that (keep precise
+Call Graph)
+
+
+
+
## Conditional Conformance
"Conditional Conformance" is a fancy name for a fairly simple idea: if an