fileShellF' :: (ShellF -> ShellF) -> (c1 -> String, String -> String ⊕ c1, Maybe c1) -> String -> F c1 (InputMsg c1) -> F c2 d textFileShellF' :: (ShellF -> ShellF) -> String -> F String (InputMsg String) -> F c d showReadFileShellF' :: (Show a, Read a) => (ShellF -> ShellF) -> Maybe a -> String -> F a (InputMsg a) -> F c d