// TypeScript
function removeElement(nums: number[], val: number): number {
    let l = 0;
    for (let r = 0; r < nums.length; r++) {
        if (nums[r] === val) {
            continue;
        }

        nums[l] = nums[r];
        l++;
    }

    return l;
};

-- Haskell
removeElement :: Eq a => a -> [] a -> (Int, [] a)
removeElement target xs =
  let ys = filter (\x -> x /= target) xs
  in (length ys, ys)

-- removeElement 3 [3, 2, 2, 3]
-- (2,[2,2])

-- removeElement 2 [0,1,2,2,3,0,4,2]
-- (5,[0,1,3,0,4])