From c60d99ddec3653ed10828c91f3e1abf8b78238b0 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Mon, 29 Apr 2019 17:13:51 +0200 Subject: Allow representing normal form as a semantic value --- dhall/src/expr.rs | 2 +- dhall/src/normalize.rs | 566 +++++++++++++++++++++++++++++-------------------- dhall/src/typecheck.rs | 49 +++-- 3 files changed, 368 insertions(+), 249 deletions(-) diff --git a/dhall/src/expr.rs b/dhall/src/expr.rs index bde4fe0..e7beafa 100644 --- a/dhall/src/expr.rs +++ b/dhall/src/expr.rs @@ -47,7 +47,7 @@ derive_other_traits!(Typed); #[derive(Debug, Clone)] pub(crate) struct PartiallyNormalized<'a>( - pub(crate) crate::normalize::WHNF, + pub(crate) crate::normalize::Value, pub(crate) Option>, pub(crate) PhantomData<&'a ()>, ); diff --git a/dhall/src/normalize.rs b/dhall/src/normalize.rs index dd9474d..b5971cb 100644 --- a/dhall/src/normalize.rs +++ b/dhall/src/normalize.rs @@ -72,7 +72,7 @@ impl<'a> PartiallyNormalized<'a> { self.2, ) } - pub(crate) fn into_whnf(self) -> WHNF { + pub(crate) fn into_whnf(self) -> Value { self.0 } } @@ -82,9 +82,9 @@ fn shift_mut(delta: isize, var: &V