У меня есть следующий код haskell. Прокомментированный фрагмент работает хорошо, но я хотел сделать его немного короче, используя лямбды. К сожалению, я, похоже, не компилирую код. intToDigit возвращает символ, но для значений ниже 15. Вот что я подозревал, был причиной проблемы ..Не удалось совместить ожидаемый тип `Maybe Int -> Char 'с фактическим типом` Char'
printSudRow :: [Maybe Int] -> String
printSudRow [] = []
--printSudRow (ro:ros) = parseMaybeToStr ro : printSudRow ros
-- where parseMaybeToStr Nothing = '.'
-- parseMaybeToStr (Just v) = intToDigit v
printSudRow (ro:ros) = (\ro ->
if (isJust ro) then intToDigit $ fromJust ro else '.') : printSudRow ros
Извините за мой непроверенной, очевидно, неправильно, а теперь удален ответ. Я, возможно, воздержусь от ответов на вопросы, занимаясь другими видами деятельности. – duplode
Никогда не рекомендуется использовать 'fromJust', если вы можете сделать сопоставление шаблонов. Использование частичных функций должно строго соблюдаться. – chi