From d541e0f84ae8f82f70e2393207d359975841facf Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Wed, 20 Nov 2019 22:47:52 +0100 Subject: lambdarec for singly-recursive lambda's --- VM.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'VM.hs') diff --git a/VM.hs b/VM.hs index 1250c1e..7762b75 100644 --- a/VM.hs +++ b/VM.hs @@ -81,7 +81,8 @@ vmRunInstr info@(Info bbmap gfds datas) state@(State { sTempMap = tmap, sArgs = (rv, _) <- vmRunBB info (state { sArgs = map (findRef tmap) as, sCloVals = clvals }) bb return (assignRef state dest rv) Nothing -> do - (rv, state') <- vmRunBuiltin state clname (map (findRef tmap) as) + -- Take 'tail as' to skip the first self-link argument + (rv, state') <- vmRunBuiltin state clname (map (findRef tmap) (tail as)) return (assignRef state' dest rv) obj -> error $ "VM: Cannot call non-closure object: " ++ show obj IAllocClo name clrefs -> return (assignRef state dest (RVClosure name (map (findRef tmap) clrefs))) -- cgit v1.2.3-70-g09d2