【问题标题】:Does Haskell support unbound variables?Haskell 是否支持未绑定的变量?
【发布时间】:2016-01-31 02:13:03
【问题描述】:

Haskell 是否支持 unbound variables 中的 Oz programming language 概念?

【问题讨论】:

    标签: 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)

    【讨论】:

    • Haskell 程序可以在程序声明变量后将MVar 绑定到一个值(为变量赋值)吗?我称之为 lazy bindinglazy assignment(或 deferred binding 或 assignment)。
    • @DerekMahar 这是 MVars 的重点,但我不确定这是否是一个很好的例子
    • @DerekMahar 不。没有定义变量就无法初始化/声明变量。
    • 这里给出的代码示例实际上并没有使用MVars(尽管如果你只使用一个线程我猜它是等效的)
    猜你喜欢
    • 2010-09-28
    • 2014-02-04
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2014-08-12
    • 2020-12-09
    相关资源
    最近更新 更多