Haskell 是不是支持未绑定的变量?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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(尽管如果你只使用一个线程我猜它是等效的)

以上是关于Haskell 是不是支持未绑定的变量?的主要内容,如果未能解决你的问题,请参考以下文章

Haskell趣学指南

安全执行不受信任的 Haskell 代码

工具rest:Haskell的REST开源框架

用sublime text 3编译haskell

Haskell 中的单子——洪峰老师讲创客道(三十五)

FFI 可以处理数组吗?如果是这样,怎么做?