Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/lamont/src/compiler/basis/basis-vars.sml
ViewVC logotype

Diff of /branches/lamont/src/compiler/basis/basis-vars.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 435, Tue Oct 19 13:14:20 2010 UTC revision 470, Tue Nov 2 16:33:48 2010 UTC
# Line 21  Line 21 
21    
22      (* short names for kinds *)      (* short names for kinds *)
23        val TK : unit -> Ty.meta_var = Ty.TYPE o MV.newTyVar        val TK : unit -> Ty.meta_var = Ty.TYPE o MV.newTyVar
24        fun DK () = Ty.DIFF(MV.newDiffVar 0)        fun DK () : Ty.meta_var = Ty.DIFF(MV.newDiffVar 0)
25        val SK : unit -> Ty.meta_var = Ty.SHAPE o MV.newShapeVar        val SK : unit -> Ty.meta_var = Ty.SHAPE o MV.newShapeVar
26        val NK : unit -> Ty.meta_var = Ty.DIM o MV.newDimVar        val NK : unit -> Ty.meta_var = Ty.DIM o MV.newDimVar
27    
# Line 54  Line 54 
54     *    b  -- bool     *    b  -- bool
55     *    r  -- real (tensor[])     *    r  -- real (tensor[])
56     *    t  -- tensor[shape]     *    t  -- tensor[shape]
57       *    f  -- field#k(d)[shape]
58     *)     *)
59    
60      val add_ii = monoVar(N.op_add, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)      val add_ii = monoVar(N.op_add, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)
# Line 62  Line 63 
63              in              in
64                [t, t] --> t                [t, t] --> t
65              end))              end))
66        val add_ff = polyVar(N.op_add, all([DK,NK,SK],
67              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
68                val t = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
69                in
70                  [t, t] --> t
71                end))
72    
73      val sub_ii = monoVar(N.op_sub, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)      val sub_ii = monoVar(N.op_sub, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)
74      val sub_tt = polyVar(N.op_sub, all([SK], fn [Ty.SHAPE dd] => let      val sub_tt = polyVar(N.op_sub, all([SK], fn [Ty.SHAPE dd] => let
# Line 69  Line 76 
76              in              in
77                [t, t] --> t                [t, t] --> t
78              end))              end))
79        val sub_ff = polyVar(N.op_sub, all([DK,NK,SK],
80              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
81                val t = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
82                in
83                  [t, t] --> t
84                end))
85    
86    (* note that we assume that operators are tested in the order defined here, so that mul_rr    (* note that we assume that operators are tested in the order defined here, so that mul_rr
87     * takes precedence over mul_rt and mul_tr!     * takes precedence over mul_rt and mul_tr!
# Line 85  Line 98 
98              in              in
99                [t, Ty.realTy] --> t                [t, Ty.realTy] --> t
100              end))              end))
101        val mul_rf = polyVar(N.op_mul, all([DK,NK,SK],
102              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
103                val t = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
104                in
105                  [Ty.realTy, t] --> t
106                end))
107        val mul_fr = polyVar(N.op_mul, all([DK,NK,SK],
108              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
109                val t = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
110                in
111                  [t, Ty.realTy] --> t
112                end))
113    
114      val div_ii = monoVar(N.op_div, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)      val div_ii = monoVar(N.op_div, [Ty.T_Int, Ty.T_Int] --> Ty.T_Int)
115      val div_rr = monoVar(N.op_div, [Ty.realTy, Ty.realTy] --> Ty.realTy)      val div_rr = monoVar(N.op_div, [Ty.realTy, Ty.realTy] --> Ty.realTy)
# Line 93  Line 118 
118              in              in
119                [t, Ty.realTy] --> t                [t, Ty.realTy] --> t
120              end))              end))
121        val div_fr = polyVar(N.op_div, all([DK,NK,SK],
122              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
123                val t = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
124                in
125                  [t, Ty.realTy] --> t
126                end))
127    
128      val lt_ii = monoVar(N.op_lt, [Ty.T_Int, Ty.T_Int] --> Ty.T_Bool)      val lt_ii = monoVar(N.op_lt, [Ty.T_Int, Ty.T_Int] --> Ty.T_Bool)
129      val lt_rr = monoVar(N.op_lt, [Ty.realTy, Ty.realTy] --> Ty.T_Bool)      val lt_rr = monoVar(N.op_lt, [Ty.realTy, Ty.realTy] --> Ty.T_Bool)

Legend:
Removed from v.435  
changed lines
  Added in v.470

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0