From 83784947be0a1da6da316d0b3659cc9883b27d48 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 31 Mar 2019 19:42:35 +0200 Subject: Generalize type of map --- dhall_core/src/core.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'dhall_core') diff --git a/dhall_core/src/core.rs b/dhall_core/src/core.rs index 3f01b55..456a68c 100644 --- a/dhall_core/src/core.rs +++ b/dhall_core/src/core.rs @@ -337,20 +337,22 @@ fn add_ui(u: usize, i: isize) -> usize { } /// Map over the immediate children of the passed Expr -pub fn map_subexpr( - e: &Expr, +pub fn map_subexpr( + e: &ExprF, map: F1, map_note: F2, map_embed: F3, map_label: F4, map_under_binder: F5, -) -> Expr +) -> ExprF where - F1: Fn(&SubExpr) -> SubExpr, + SE1: Clone, + SE2: Clone, + F1: Fn(&SE1) -> SE2, F2: FnOnce(&S) -> T, F3: FnOnce(&A) -> B, F4: Fn(&Label) -> Label, - F5: FnOnce(&Label, &SubExpr) -> SubExpr, + F5: FnOnce(&Label, &SE1) -> SE2, { use crate::ExprF::*; let map = ↦ -- cgit v1.2.3