Because we all know already that a program needs to print values or "do" something to be useful, so in that way no program is ever 100% pure - is that what he's talking about?
Or is he talking about 100% pure functional languages which allow functional ways of writing IO code, like Haskell?
In Haskell can't you still program nearly 100% imperatively, just by wrapping stuff in the IO mondad?
mysquare x = x * x
mysquarer x = do
putStrLn "Hey look, it squared"
return (mysquare x)
main = do
putStrLn "Starting program..."
x' <- mysquarer 9
putStrLn (show x')
Can't he just write his program like that?Or is he just arguing that we should write programs in functional languages but just with an imperative style (no points-free and simple use of IO)?