repositories
/
cc1516.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
920ef95
)
hi
author
pimjager
<pim@pimjager.nl>
Thu, 28 Apr 2016 15:59:20 +0000
(17:59 +0200)
committer
pimjager
<pim@pimjager.nl>
Thu, 28 Apr 2016 15:59:20 +0000
(17:59 +0200)
sem.icl
patch
|
blob
|
history
diff --git
a/sem.icl
b/sem.icl
index
17c9040
..
1c4f345
100644
(file)
--- a/
sem.icl
+++ b/
sem.icl
@@
-7,6
+7,7
@@
from StdFunc import o, flip, const, id
import Control.Monad
import Control.Monad.Trans
import Control.Monad
import Control.Monad.Trans
+//import Control.Monad.State
import Data.Either
import Data.Maybe
import Data.Monoid
import Data.Either
import Data.Maybe
import Data.Monoid
@@
-44,7
+45,7
@@
import AST
instance zero Gamma where
zero = 'Map'.newMap
instance zero Gamma where
zero = 'Map'.newMap
-variableStream :: [
String
]
+variableStream :: [
TVar
]
variableStream = map toString [1..]
sem :: AST -> Either [SemError] Constraints
variableStream = map toString [1..]
sem :: AST -> Either [SemError] Constraints
@@
-168,6
+169,13
@@
unify (ListType t1) (ListType t2) = unify t1 t2
unify t1 t2 | t1 == t2 = Right zero
| otherwise = Left $ UnifyError zero t1 t2
unify t1 t2 | t1 == t2 = Right zero
| otherwise = Left $ UnifyError zero t1 t2
+//// ------------------------
+//// Algorithm M, Inference and Solving
+//// ------------------------
+//:: Typing a :== StateT (Gamma, [TVar]) Either a
+
+//map a schemes type variables to variables with fresh names
+//i.e. a->[b] becomes c->[d]