elemIndex
уже возвращает нужный вам индекс, завернутый в Just
, если элемент находится в списке. Если это не так, возвращается Nothing
.
. Комбинируя это с функцией fromMaybe , вы можете легко указать значение по умолчанию для случая, когда оно не найдено:
import Data.Maybe (fromMaybe)
-- more code here
getPos :: String -> [String] -> Int
getPos elem list = fromMaybe (default_value elem) (elemIndex elem list)
Обратите внимание, что это все равно не скомпилируется, потому что ваша функция default_value
должна возвращать "обычный" Int
, а не Maybe Int
. Это не проблема, так как все ваши значения на самом деле уже "обычные Int
" - просто измените сигнатуру типа, и все должно быть хорошо (если я не пропустил никаких других проблем в вашем коде).