2016-07-25 3 views
0

Когда я ввожу в реплику fmap (+1) $ read "[1]" Я бы ожидал получить [2], но вместо этого получаю ошибка:

нет экземпляра для (Functor f0), вытекающего из использования 'это'

к сожалению, это не поможет мне. Может кто-нибудь объяснить мне, что не так с этим отрезанным кодом.

+2

Попробуйте явно указать его тип, например. 'fmap (+1) $ read" [1] ":: [Int]' – pdexter

+3

Несвязанный, вы почти никогда не будете использовать 'read', потому что это приводит к сбою вашей программы, если есть ошибка синтаксического анализа. Вместо этого используйте что-то вроде 'readMaybe'. – dfeuer

+0

или просто используйте 'map' ... –

ответ

7

Он просто не знает, какой тип читал ваше значение. Помогите ему, указав тип явно:

fmap (+1) $ (read "[1]" :: [Int]) 
Смежные вопросы