计算机语言中 scheme 里set!的用法
发布网友
发布时间:2022-03-23 22:48
我来回答
共1个回答
热心网友
时间:2022-03-24 00:18
set!这个东西主要是产生了副作用,(你网上可以搜一下函数式编程+副作用)
一般来说纯函数式语言是不允许有副作用的,scheme里面你在一个()里面做任何事情原则上都不会影响()外部变量的状态。不过set!不一样,所有带!号的函数有可能对()外部的状态产生影响,举个例子
(define (hack a)
(begin (set! a (- a 10) )
a)
)
###
(set! a (- a 10) )改变了a的值,你用其他不带!符号的函数来替换这句,就不能达到改变a的值的效果。