可表达与可表示的值

问题描述 投票:1回答:1

什么编程语言具有可表达但不可表示的值。这也意味着什么?我真的不明白其中的区别。目前我认为它意味着一种功能语言,因为那时你不能只给出变量值指向它们?这完全错了吗?

functional-programming programming-languages
1个回答
0
投票

根据David Schmidt的these lecture notes说:

可表达的值是可以由代码中的表达式生成的值,如字符串,数字,lambdas /匿名函数(支持它们的语言)等。

可表达的值是可以命名(绑定到标识符)并稍后引用的值,如变量或命名函数的值。

例如,语言可以具有声明命名函数的语法,但不具有匿名函数的表达式语法。所以(如果我理解的话)在这种语言中,函数可以表示但不可表达。

我能找到的唯一可以表达但不可表示的值的例子是错误值(在some theoretical languages第11页中),它可以由表达式(如1/0)生成,但不能绑定到标识符(保存在变量中)。 (这假设赋值语句传播错误而不是简单地将错误值存储在变量中。)

匿名类型也有些类似。例如,在C#中,您可以定义一个匿名对象,该对象具有无法绑定到标识符的匿名类型(不可表示):

// anonymous objects can only be saved into a variable by using type inference
var obj = new { Name = "Farah", Kind = "Human" };
© www.soinside.com 2019 - 2024. All rights reserved.