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 c1, Read c1) => (ShellF -> ShellF) -> Maybe c1 -> String -> F c1 (InputMsg c1) -> F c2 d