ハスケルでforM_
の使用に陥る傾向があります。これはRubyでは.each
、Scalaではforeach
と非常によく似ています。`forM_`はハスケルですね?
import Control.Monad (forM_)
import Network.BSD (getHostByName, hostAddresses)
import Network.Socket (inet_ntoa)
import System.Environment (getArgs)
resolve address = do
ent <- getHostByName address
mapM inet_ntoa (hostAddresses ent)
main = do
args <- getArgs
args `forM_` (\address -> do
ips <- resolve address
ips `forM_` (\ip -> putStrLn $ address ++ "\t" ++ ip))
私には慣用的であるように見えるが、mapM_
を使用すると、不器用なようではありません。このコードを書き直す慣用方法はありますか?
ない重複したが、私は、私は[ここに私の答え]感じる感じますhttp://stackoverflow.com/questions/16726659/should-do-notation- be-avoided-in-haskell/16733658#16733658)はこれをかなりうまく扱っています。私は_itがそれのように 'forM_'を使うのはまったくいいと言っています。 (phadejが言うように、 'for_'はより現代的な選択肢ですが、実際には、通常はこれらの間に違いはありません。) – leftaroundabout