>>819
T型の値を変更する関数を書く代わりに、T型の値を受け取ってT型の値を返す関数を書くのが定石。
俺ならこんな感じで書く。

getRen :: IgoBoard -> Point -> Stone -> Set Point
getRen board point stone = augmentRen point empty
  where
    augmentRen :: Point -> Set Point -> Set Point
    augmentRen (Point x y) ren
      | stone == boardGetStone board && not (member point ren)
        = augmentRen (Point x (y-1)) $
          augmentRen (Point x (y+1)) $
          augmentRen (Point (x-1) y) $
          augmentRen (Point (x+1) y) $
            insert point ren
      | otherwise = ren