summaryrefslogtreecommitdiff
path: root/dhall_core/src/core.rs
diff options
context:
space:
mode:
authorNadrieril2019-04-06 00:41:31 +0200
committerNadrieril2019-04-06 00:41:31 +0200
commit6a675a13fcfafa057c44db84c3b0ca3b344cfdab (patch)
tree76d0f0fc848887d2945d586b58847575ca31d0da /dhall_core/src/core.rs
parent627287185118482ceb7132f6dedad7111dccf972 (diff)
parent305a2ee7dcd3b3f61bf6877312e3c34767e8bc0c (diff)
Merge branch 'master' into exprf
Diffstat (limited to 'dhall_core/src/core.rs')
-rw-r--r--dhall_core/src/core.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/dhall_core/src/core.rs b/dhall_core/src/core.rs
index db83a1e..3d1b9f3 100644
--- a/dhall_core/src/core.rs
+++ b/dhall_core/src/core.rs
@@ -598,6 +598,25 @@ pub fn rc<N, E>(x: Expr<N, E>) -> SubExpr<N, E> {
SubExpr(Rc::new(x))
}
+pub fn app<N, E>(f: Expr<N, E>, args: Vec<SubExpr<N, E>>) -> Expr<N, E> {
+ if args.is_empty() {
+ f
+ } else {
+ ExprF::App(rc(f), args)
+ }
+}
+
+pub fn app_rc<N, E>(
+ f: SubExpr<N, E>,
+ args: Vec<SubExpr<N, E>>,
+) -> SubExpr<N, E> {
+ if args.is_empty() {
+ f
+ } else {
+ rc(ExprF::App(f, args))
+ }
+}
+
fn add_ui(u: usize, i: isize) -> usize {
if i < 0 {
u.checked_sub(i.checked_neg().unwrap() as usize).unwrap()