mapM กับ mapM_

จาก Stackoverflow

let ignoreList =
[ "dist"
, ".DS_Store"
, "packages"
, "tools"
, "node_modules"
, "**/*.js.map"
, ".stack-work"
, "bin"
, "obj"]
let ignoreLines = map (++ "\n") ignoreList
mapM (appendFile ".gitignore") ignoreLines

ควรเปลี่ยนจาก mapM เป็น mapM_ เนื่อจาก mapM appendFile คืนค่าเป็น [IO()] ที่ไม่ได้ใช้ประโยชน์ แต่มี runtime cost สูง เนื่องจากต้องสร้าง list มาเก็บค่า ต่างจาก mapM_ appendFile ที่คืนค่า IO() ตัวเดียว

mapM_ (appendFile ".gitignore") ignoreLines
Show your support

Clapping shows how much you appreciated wk’s story.