如果编程语言中的所有内容都是表达式,那么它会是引用透明的吗?

问题描述 投票:0回答:2

我在某处读到,尽管经过大量搜索后找不到它,但有人提议创建一种新的编程语言,这将是完全引用透明,一切都是表达式。

有关引用透明度的一些问题表明某些语言(例如 Ruby 和 Perl)“几乎”将所有内容都作为表达式。

这可能/存在吗?

如果我理解正确的话,如果一种编程语言是完全引用透明的,这是否意味着根本不会有任何副作用,

是否有可能拥有一种完整的没有副作用的编程语言?

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

programming-languages expression side-effects referential-transparency
2个回答
4
投票

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

的表达式

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

一个新的宇宙

,其中单词在屏幕上。


2
投票

© www.soinside.com 2019 - 2024. All rights reserved.