From 77c76b03ce2693f29eaac1fd2d1e41c1b86c180b Mon Sep 17 00:00:00 2001 From: crumbtoo Date: Tue, 14 Nov 2023 15:20:24 -0700 Subject: [PATCH] constructed data! that was easier than expected. see you in a few hours when i realise the catastrophic mistake i must've missed here --- src/TIM.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/TIM.hs b/src/TIM.hs index 801dc0d..07fc627 100644 --- a/src/TIM.hs +++ b/src/TIM.hs @@ -184,6 +184,7 @@ step st = NSupercomb n as b -> scStep n as b st NInd a -> indStep a st NPrim n p -> primStep n p st + NData t as -> dataStep t as st where numStep :: Int -> TiState -> TiState @@ -252,7 +253,18 @@ step st = primStep _ IntMulP st = primBinOp (*) st primStep _ IntDivP st = primBinOp (div) st - -- primStep _ + primStep n (ConP t a) (TiState s d h g sts) = + TiState s' d h' g sts + where + s' = drop a s + h' = update h rootAddr $ NData t argAddrs + rootAddr = s !! a + argAddrs = getArgs h s + + dataStep :: Int -> [Addr] -> TiState -> TiState + dataStep _ _ (TiState [a] (s:d) h g sts) = TiState s d h g sts + + dataStep _ _ _ = error "data applied as function..." primBinOp :: (Int -> Int -> Int) -> TiState -> TiState primBinOp f (TiState s d h g sts) =