@@ -331,11 +331,8 @@ throwSrcTV e = do
331331
332332type VariableMap = Map VarName Scheme
333333
334−(~~) :: Member (Writer Constraint) r => NType -> NType -> Eff r ()
335−lhs ~~ rhs = ([] :=> lhs) ~~~ ([] :=> rhs)
336−
337−(~~~) :: Member (Writer Constraint) r => Scheme -> Scheme -> Eff r ()
338−lhs ~~~ rhs = tell $ lhs :~ rhs
334+(~~) :: Member (Writer Constraint) r => Scheme -> Scheme -> Eff r ()
335+lhs ~~ rhs = tell $ lhs :~ rhs
339336
340337-- TODO: shadowed bindings are not properly restored.
341338withBindings ::
@@ -409,29 +406,29 @@ infer (Fix (Compose (Ann src x))) = runReader src $ case x of
409406 return t
410407 NUnary NNot y -> do
411408 t <- infer y
412− t ~~~ NAtomic Bool
409+ t ~~ NAtomic Bool
413410 return t
414411 NBinary NUpdate lhs rhs -> do
415412 lhsT <- infer lhs
416413 rhsT <- infer rhs
417− lhsT ~~~ rhsT
414+ lhsT ~~ rhsT
418415 lhs' <- expectAttrSet lhsT
419416 rhs' <- expectAttrSet rhsT
420− forM_ (M.toList $ M.intersectionWith (,) lhs' rhs') (\(_, (a, b)) -> a ~~~ b)
417+ forM_ (M.toList $ M.intersectionWith (,) lhs' rhs') (\(_, (a, b)) -> a ~~ b)
421418 return . scheme . NAttrSet $ rhs' <> lhs'
422419 NBinary NApp lhs rhs -> do
423420 lhst <- infer lhs
424421 rhst <- infer rhs
425422 rest <- scheme . NTypeVariable <$> freshSrc
426− lhst ~~~ (scheme $ rhst :-> rest)
423+ lhst ~~ (scheme $ rhst :-> rest)
427424 return rest
428425 NBinary NConcat lhs rhs -> do
429426 lhst <- infer lhs
430427 rhst <- infer rhs
431428 t <- scheme . NTypeVariable <$> freshSrc
432429 let listt = scheme $ List t
433− lhst ~~~ listt
434− rhst ~~~ listt
430+ lhst ~~ listt
431+ rhst ~~ listt
435432 return $ listt
436433 NBinary NEq lhs rhs -> equality lhs rhs
437434 NBinary NNEq lhs rhs -> equality lhs rhs
@@ -456,7 +453,7 @@ infer (Fix (Compose (Ann src x))) = runReader src $ case x of
456453 Nothing -> return ()
457454 Just defR -> do
458455 defT <- infer defR
459− defT ~~~ resT
456+ defT ~~ resT
460457 return resT
461458 NSet NNonRecursive xs -> scheme . NAttrSet <$> inferBinding xs
462459 NHasAttr attrSet path -> do
@@ -486,10 +483,10 @@ infer (Fix (Compose (Ann src x))) = runReader src $ case x of
486483 withBindings bindingsT $ infer body
487484 NIf cond t f -> do
488485 condT <- infer cond
489− condT ~~~ NAtomic Bool
486+ condT ~~ NAtomic Bool
490487 tT <- infer t
491488 fT <- infer f
492− tT ~~~ fT
489+ tT ~~ fT
493490 return tT
494491 NWith set body -> do
495492 setT <- infer set
@@ -497,32 +494,32 @@ infer (Fix (Compose (Ann src x))) = runReader src $ case x of
497494 withBindings vars $ infer body
498495 NAssert cond body -> do
499496 condT <- infer cond
500− condT ~~~ NAtomic Bool
497+ condT ~~ NAtomic Bool
501498 infer body
502499 NSynHole _ -> scheme . NTypeVariable <$> freshSrc
503500 where
504501 equality lhs rhs = do
505502 lhst <- infer lhs
506503 rhst <- infer rhs
507− lhst ~~~ rhst
504+ lhst ~~ rhst
508505 return $ NAtomic Bool
509506 comparison lhs rhs = do
510507 lhst <- infer lhs
511508 rhst <- infer rhs
512509 -- TODO: Infer lhst and rhst are either Integer or Double or String
513− lhst ~~~ rhst
510+ lhst ~~ rhst
514511 return $ NAtomic Bool
515512 math lhs rhs = do
516513 lhst <- infer lhs
517514 rhst <- infer rhs
518515 -- TODO: Infer lhst and rhst are either Integer or Double
519− lhst ~~~ rhst
516+ lhst ~~ rhst
520517 return lhst
521518 logic lhs rhs = do
522519 lhst <- infer lhs
523520 rhst <- infer rhs
524− rhst ~~~ NAtomic Bool
525− lhst ~~~ NAtomic Bool
521+ rhst ~~ NAtomic Bool
522+ lhst ~~ NAtomic Bool
526523 return $ NAtomic Bool
527524
528525inferBinding :: [Binding (Fix NExprLocF)] -> InferM' (Map VarName Scheme)