Поддерживает ли Haskell несвязанные переменные?
Поддерживает ли Haskell концепцию несвязанных переменных, как в языке программирования Oz?
1 ответ
Haskell поддерживает переменные только в терминах значений в (монадических) контекстах. Когда вы посмотрите на них, есть определенные, такие как MVar
который действительно может быть пустым.
Если вы хотите представить простую обнуляемость значения, Maybe a
это идеальный способ сделать это, отдельно от фактического значения, являющегося ссылкой на что-то изменяемое или просто неизменное.
Чтобы расширить и проиллюстрировать:
newIORef :: a -> IO (IORef a)
Но мы можем легко написать newEmptyIORef
в качестве таких:
newEmptyIORef :: IO (IORef (Maybe a))
newEmptyIORef = newIORef Nothing
Обратите внимание, что Maybe (IORef a) ≠ IORef (Maybe a)
,