1

我已经在某个地方做好了准备,尽管经过大量搜索后我找不到它,如果有人在哪里创建一种新的编程语言,那么在一切都是表达式的情况下,它将是完全引用透明的。

一些关于引用透明性的问题表明,某些语言,如 Ruby 和 Perl,几乎所有东西都是表达式。

这可能/是否存在?

如果我理解它,那么如果一种编程语言是完全引用透明的,这是否意味着根本没有副作用,是否有可能拥有一种没有副作用的完整编程语言?

标题的主要问题是,如果目标是创建一种完全引用透明的编程语言,那么一切都是表达式吗?

4

2 回答 2

4

如果通过表达式我们理解任何返回值的东西,那么不是表达式的计算就不能返回值,并且通过引用透明性可以安全地删除。所以是的,引用透明性要求一切都是表达式。

但是,一切都是表达式并不意味着没有副作用。例如,在 C 语言中,有许多表达式具有副作用:取任何涉及递增和递减运算符 ++ 和 -- 的表达式。

有一些没有副作用的编程语言。Haskell 是使用最广泛的。它使用称为 monads 的巧妙技巧来解决需要修改状态的情况。例如,要在屏幕上打印“Hello”,Haskell 不会将现有的 Universe 修改为单词出现在屏幕上的地方;它创建并返回一个新的宇宙,这个词出现在屏幕上。

于 2013-07-24T08:35:46.597 回答
2

有可能拥有一门没有副作用的完整编程语言。看看 lisp、haskell 或许多其他函数式语言。我相信这些都是你所想的很好的例子。

于 2013-07-24T08:27:35.783 回答