* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*)
+ *)
(* Configuration language abstract syntax *)
| TUnif of string * typ option ref
(* Unification variable to be determined during type-checking *)
withtype typ = typ' * position
- and record = typ StringMap.map
+ and record = (typ' * position) StringMap.map
datatype exp' =
EInt of int
* action are abandoned *)
| EWith of exp * exp
(* Apply a TNested to an action *)
+ | EALam of string * pred * exp
+ (* Abstraction for building TNested values *)
withtype exp = exp' * position
datatype decl' =
DExternType of string
| DExternVal of string * typ
| DVal of string * typ option * exp
+ | DContext of string
type decl = decl' * string option * position
-type file = decl list * exp option
+type file = string option * decl list * exp option
+
+fun multiApp (f, loc, args) =
+ foldl (fn (arg, e) => (EApp (e, arg), loc)) f args
end