2 lisp python expression if-statement indentation
在类似LISP的语言中,所有语言结构都是一等公民.
请考虑Dylan中的以下示例:
let x = if (c)
foo();
else
bar();
end;
Run Code Online (Sandbox Code Playgroud)
在LISP中:
(setf x (if c (foo) (bar)))
Run Code Online (Sandbox Code Playgroud)
在Python中你必须写:
if c:
x = foo();
else:
x = bar();
Run Code Online (Sandbox Code Playgroud)
因为Python会使语句和表达式失效.
所有语言结构都可以使用符合off-side规则的语言(具有基于inningtion的语法)作为表达式,以便您可以将它们分配给变量或将它们作为参数传递?
我没有在这里看到与first-classness的关系 - 你没有将if
语句传递给函数,而是它返回的对象,它在python中与lisp一样完全是第一类.然而,就语句/表达式二分法而言,显然它是可能的:例如Haskell具有基于缩进的语法,但作为纯函数语言显然没有语句.
我认为Python的分离更多地与禁止使用像"if x = 4:"等危险结构相比,而不是任何语法限制.(虽然我认为它失去了比这更多的东西 - 有时候足够的弹性足以射击你的脚是非常有价值的,即使你冒险失去一些脚趾一次又一次.)
归档时间: |
|
查看次数: |
244 次 |
最近记录: |