Mat*_*Mut 2 haskell pass-by-reference
来自C#背景,我想说ref在某些情况下,关键字非常有用,在这些情况下,需要更改方法参数,以直接影响用于设置参数的值类型的传递值null.
此外,out当返回大量各种逻辑上未连接的值时,关键字可以派上用场.
我的问题是:是否可以通过Haskell中的引用将参数传递给函数?如果没有,直接替代方案(如果有的话)是什么?
在像Haskell和ML 这样的语言中,"pass-by-value"和"pass-by-reference"之间没有区别,因为不可能在这些语言中分配变量.在影响任何传递的变量时,首先不可能对方法参数进行"更改".
这取决于背景.没有任何背景,不,你不能(至少不是你的意思).有了上下文,如果你愿意,你很可能会这样做.特别是,如果您正在使用IO或者ST,您可以使用IORef或STRef分别使用或者可变数组,向量,哈希表,弱哈希表(IO仅限,我相信)等.一个函数可以使用其中的一个或多个产生一个动作(当执行时)将修改这些引用的内容.
另一种背景,StateT给出了纯粹实现可变"状态"值的错觉.您可以使用复合状态并将镜头传入其中,为某些目的模拟参考.