I am working on the following code and wanted to find the index of the number in the box string. So i used findIndex but it returns the Maybe Int value whereas i want only Int v
You can easily do this using pattern matching in your 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 IO action to get the number:
getNumber = do putStrLn "Enter the number:"
number <- readLn
case findposition number box of
Just n -> -- Do whatever
Nothing -> putStrLn "Please try again." >> getNumber
This way if the user enters an invalid number, it just asks again.
Also, as written now, your code won't work. You should have some other way of storing the numbers in box
as actual numbers; right now, they're in Strings.