hSpwnProcess' (List (Atom func : args)) hn | Just fn <- lookup func shellOps =
  fn args hn
hSpwnProcess' (List (Atom func : args)) hn | otherwise = spwnProcess (proc func (toString args)) $ UseHandle hn
  where
    toString = map showVal
hSpwnProcess' (Atom   cmd) hn = spwnProcess (proc cmd []) $ UseHandle hn
hSpwnProcess' (String cmd) hn = spwnProcess (shell cmd) $ UseHandle hn

spwnProcess :: CreateProcess -> StdStream -> IO Handle
spwnProcess process inStream = do
  --(_, Just phout, _, pHandle) <- createProcess (proc cmd (map showVal args))