我在某处读到,尽管经过大量搜索后找不到它,但有人提议创建一种新的编程语言,这将是完全引用透明,一切都是表达式。
有关引用透明度的一些问题表明某些语言(例如 Ruby 和 Perl)“几乎”将所有内容都作为表达式。
这可能/存在吗?如果我理解正确的话,如果一种编程语言是完全引用透明的,这是否意味着根本不会有任何副作用,
是否有可能拥有一种完整的没有副作用的编程语言?标题的主要问题是,如果目标是创建一种完全引用透明的编程语言,那么不言而喻,一切都是表达式吗?
但是,一切都是表达并不意味着没有副作用。例如,在 C 语言中,有许多表达式具有副作用:采用任何涉及递增和递减运算符 ++ 和 --.
的表达式有几种编程语言没有副作用。 Haskell 是使用最广泛的。它使用一种称为 monad 的巧妙技巧来解决需要修改状态的情况。例如,要在屏幕上打印“Hello”,Haskell 不会将现有宇宙修改为该单词出现在屏幕上的宇宙;而是将现有宇宙修改为该单词出现在屏幕上的宇宙。它创建并返回
一个新的宇宙,其中单词在屏幕上。