You can easily do this using the pattern matching in the do statement:
case findposition number box of Just n -> -- do whatever with n Nothing -> putStrLn "Invalid number!" -- you can handle the error however you want.
A good option would be to create a separate I / O action to get the number:
getNumber = do putStrLn "Enter the number:" number <- readLn case findposition number box of Just n ->
Thus, if the user enters an invalid number, he simply requests again.
Also, as written now, your code will not work. You should have another way of storing the numbers in the box as actual numbers; right now, they are in Rows.
source share