firstTrue (x:xs) = do
  test <- x
  case test of
    Just _ -> return test
    Nothing -> firstTrue xs

-- |Split a byte into a (Bool, Word8) pair that has the most significant bit
-- and the lower 7 bits.  This is a common pattern in Git bit-packing schemes.
firstTrue (x:xs) = do
  test <- x
  case test of
    Just _ -> return test
    Nothing -> firstTrue xs

-- |Split a byte into a (Bool, Word8) pair that has the most significant bit
-- and the lower 7 bits.  This is a common pattern in Git bit-packing schemes.
firstTrue (x:xs) = do
  test <- x
  case test of
    Just _ -> return test
    Nothing -> firstTrue xs

-- |Split a byte into a (Bool, Word8) pair that has the most significant bit
-- and the lower 7 bits.  This is a common pattern in Git bit-packing schemes.