그래서이 질문은 모나드에 관한 것이고 (구체적으로는 페이), 필자는 IO 모나드를 사용합니다.do not 표기법을 사용하여 목록에 맵을 사용하는 방법 - 즉, 'IO()'유형으로 'IO()'유형을 피 하시겠습니까?
나는 입력이 문자열 목록이고 각 문자열을 하나씩 출력하고 싶습니다. 그래서 내 아이디어는 다음과 같습니다.
funct :: [String] -> ?
funct strs = do
map putStrLn strs
[IO()] 유형을 반환하기 때문에 작동하지 않습니다. 그래서 내 질문은, 어떻게 목록에 매핑하고, 내가 한 줄씩 함수를 수행하는 것처럼 다루는가, 일반적인 do-notation, 반복 스타일 (아래처럼)?
funct :: [String] -> IO()
funct strs = do
putStrLn (strs !! 0)
putStrLn (strs !! 1)
...
이미 제안 된'Control.Monad '의 표준 함수를 사용하십시오. 또한'funct (h : t) = do {putStrLn h; funct t; }; funct _ = return()' –