unProg (FunDef f) = do
	(dt, inp, ft, out) <- get
	let ft' = V.imap (\i v -> if i == fromEnum (focus dt) then Just f else v) ft
	put (dt, inp, ft', out)
	return out

runProg (FunDef f) = do
	(dt, inp, ft, out) <- get
	let ft' = V.imap (\i v -> if i == fromEnum (focus dt) then Just f else v) ft
	put (dt, inp, ft', out)
	return out
runProg (FunDef f) = do
	(dt, inp, ft, out) <- get
	let ft' = V.imap (\i v -> if i == fromEnum (focus dt) then Just f else v) ft
	put (dt, inp, ft', out)
	return out