Скажем, я написал следующий удивительный фрагмент кода:
func = do
a <- Just 5
return a
Это довольно бессмысленно, я знаю. Здесь a
равно 5
, а func
возвращает Just 5
.
Теперь я переписываю свою потрясающую (но бессмысленную)функцию:
func' = do
a <- Nothing
return a
Эта функция возвращает Nothing
, но что, черт возьми, такое a
? Из значения Nothing
извлекать нечего, но программа не хнычет, когда я делаю что-то подобное :
func'' = do
a <- Nothing
b <- Just 5
return $ a+b
. Мне просто трудно понять, что происходит на самом деле. Что такое a
? Другими словами:Что<-
на самом деле делает ? Сказать, что он "извлекает значение из правой-стороны и привязать его к левой-стороне", очевидно, слишком-упрощать. Что я не получаю?
Спасибо:)