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

# SCM Repository

[diderot] Diff of /trunk/src/compiler/basis/basis.sml
 [diderot] / trunk / src / compiler / basis / basis.sml

# Diff of /trunk/src/compiler/basis/basis.sml

revision 67, Fri May 14 14:11:21 2010 UTC revision 68, Tue May 18 16:51:30 2010 UTC
# Line 41  Line 41
41
42      in      in
43
44      val basis = [    (* overloaded operators *)
45          (* operators *)      val overloads = [
(N.op_at, all([NK, NK, SK],
fn [k, d, dd] => let
val k = Ty.NatVar k
val d = Ty.NatVar d
val dd = Ty.ShapeVar dd
in
[field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd
end)),
46  (*  (*
47      val op_add = Atom.atom "+"      val op_add = Atom.atom "+"
48      val op_sub = Atom.atom "-"      val op_sub = Atom.atom "-"
# Line 63  Line 55
55      val op_gte = Atom.atom ">="      val op_gte = Atom.atom ">="
56      val op_gt = Atom.atom ">"      val op_gt = Atom.atom ">"
57  *)  *)
58            ]
59
60      (* non-overloaded operators, etc. *)
61        val basis = [
62            (* operators *)
63              (N.op_at, all([NK, NK, SK],
64                fn [k, d, dd] => let
65                    val k = Ty.NatVar k
66                    val d = Ty.NatVar d
67                    val dd = Ty.ShapeVar dd
68                    in
69                      [field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd
70                    end)),
71            (N.op_at, all([NK, NK, SK],            (N.op_at, all([NK, NK, SK],
72              fn [k, d, dd] => let              fn [k, d, dd] => let
73                  val k = Ty.NatVar k                  val k = Ty.NatVar k
# Line 72  Line 77
77                    [field(k, d, dd), tensor[d]]                    [field(k, d, dd), tensor[d]]
78                      --> field(Ty.NatExp(k, ~1), d, Ty.ShapeExt(dd, d))                      --> field(Ty.NatExp(k, ~1), d, Ty.ShapeExt(dd, d))
79                  end)),                  end)),
(*
val op_orelse = Atom.atom "||"
val op_andalso = Atom.atom "&&"
*)
80            (N.op_norm, all([SK],            (N.op_norm, all([SK],
81              fn [dd] => [Ty.T_Tensor(Ty.ShapeVar dd)] --> Ty.realTy)),              fn [dd] => [Ty.T_Tensor(Ty.ShapeVar dd)] --> Ty.realTy)),
82          (* functions *)          (* functions *)
# Line 92  Line 93
93            (N.fn_cos,    ty([Ty.realTy] --> Ty.realTy)),            (N.fn_cos,    ty([Ty.realTy] --> Ty.realTy)),
94            (N.fn_dot,    allNK(fn tv => [tensor[Ty.NatVar tv]]            (N.fn_dot,    allNK(fn tv => [tensor[Ty.NatVar tv]]
95                            --> tensor[Ty.NatVar tv])),                            --> tensor[Ty.NatVar tv])),
96  (*            (N.fn_inside, all([NK, NK, SK],
97      val fn_inside = Atom.atom "inside"              fn [k, d, dd] => let
98  *)                  val k = Ty.NatVar k
99                    val d = Ty.NatVar d
100                    val dd = Ty.ShapeVar dd
101                    in
102                      [Ty.T_Tensor(Ty.Shape[d]), field(k, d, dd)]
103                        --> Ty.T_Bool
104                    end)),
105            (N.fn_load,   all([NK, SK],            (N.fn_load,   all([NK, SK],
106              fn [d, dd] => let              fn [d, dd] => let
107                  val d = Ty.NatVar d                  val d = Ty.NatVar d

Legend:
 Removed from v.67 changed lines Added in v.68

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