nullEnv :: IO Env
nullEnv = do prims <- mapM (\(n, (a, _)) -> do val <- newIORef (lambdify (map PName a) (ABlock [APrimCall n (map AVariable a)]))
                                               return (Define n, val)) primFuncs
             global <- newIORef prims
             return [global]
nullEnv :: IO Env
nullEnv = do prims <- mapM (\(n, (a, _)) -> do val <- newIORef (lambdify (map PName a) (ABlock [APrimCall n (map AVariable a)]))
                                               return (Define n, val)) primFuncs
             global <- newIORef prims
             return [global]
nullEnv = do prims <- mapM (\(n, (a, _)) -> do val <- newIORef (lambdify (map PName a) (ABlock [APrimCall n (map AVariable a)]))
                                               return (Define n, val)) primFuncs
             global <- newIORef prims
             return [global]