在Nix REPL中,f: f与f:f为何输出结果不同?
Nix REPL中
f: f和f:f的差异原因 - Nix的匿名函数(lambda)语法要求必须是
参数: 表达式的形式,这里的空格是语法的一部分——只有在:后面加空格,解析器才会把:识别为lambda的参数与返回表达式的分隔符。 - 输入
f: f时,解析器能正确识别这是一个合法的lambda:参数为f,返回值就是f本身,所以REPL输出<lambda>表示这是一个匿名函数。 - 但输入
f:f时,没有空格的情况下,:不会被解析成lambda的分隔符,整个f:f会被当成一个无法匹配任何合法表达式的内容。这时Nix REPL会触发 fallback 逻辑,直接把它当作字符串字面量处理,因此输出"f:f"。
内容的提问来源于stack exchange,提问作者zichao liu
相关产品推荐
相关产品推荐

