~ubuntu-branches/ubuntu/wily/agda/wily-proposed

« back to all changes in this revision

Viewing changes to src/core/Thierry/Check.hs

  • Committer: Package Import Robot
  • Author(s): Iain Lane
  • Date: 2014-08-05 06:38:12 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20140805063812-io8e77niomivhd49
Tags: 2.4.0.2-1
* [6e140ac] Imported Upstream version 2.4.0.2
* [2049fc8] Update Build-Depends to match control
* [93dc4d4] Install the new primitives
* [e48f40f] Fix typo dev→doc

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
module Check where
2
 
 
3
 
import Val
4
 
import Conv
5
 
import Core.Abs
6
 
import Exp1
7
 
import Cont
8
 
 
9
 
 
10
 
check :: Cont -> Val -> Exp -> G ()
11
 
checkT :: Cont -> Exp -> G ()
12
 
 
13
 
checkT con ESet = return ()
14
 
checkT con (EFun x a b) =
15
 
 do
16
 
  checkT con a
17
 
  v <- return (evalCon con a)
18
 
  u <- genCon con x v
19
 
  checkT (upCon x u v con) b
20
 
checkT con e = check con Set e
21
 
 
22
 
 
23
 
check con (Fun v f) (ELam x e) =
24
 
 do
25
 
  u <- genCon con x v
26
 
  check (upCon x u v con) (f u) e
27
 
check con v (EIdent n) =
28
 
 do
29
 
  v' <- return (snd (getVT n con))
30
 
  eqT (length con) v v'
31
 
check con v (EApp n es) =
32
 
 do
33
 
  v' <- checkI con (snd (getVT n con)) es
34
 
  eqT (length con) v v'
35
 
check con v (Efun nes) =
36
 
 mapM_ (checkP con v) nes
37
 
check _ _ e = fail ("check " ++ show e)
38
 
 
39
 
checkP con (Fun (App h ps) f) (Bcon i e) =
40
 
 do
41
 
  (v,w) <- return (getVT i con)
42
 
  check con (itCurry (apps v ps) (inst w ps) f) e
43
 
checkP _ _ _ = fail "checkP"
44
 
 
45
 
 
46
 
checkI con (Fun a f) (e:es) =
47
 
 do
48
 
  check con a e
49
 
  checkI con (f (evalCon con e)) es
50
 
checkI _ v []  = return v
51
 
checkI _ _ _   = fail "checkI"