«<-» и связанные значения

Скажем, я написал следующий удивительный фрагмент кода:

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? Другими словами:Что<-на самом деле делает ? Сказать, что он "извлекает значение из правой-стороны и привязать его к левой-стороне", очевидно, слишком-упрощать. Что я не получаю?

Спасибо:)

6
задан Undreren 18 April 2012 в 07:32
поделиться