【发布时间】:2011-11-05 06:49:37
【问题描述】:
在Mathematica 内置符号以大写字母开头。因此,用户创建的符号名称不以大写字母开头是公认的做法。
这个限制应该扩展到语法的其他方面到什么程度?良好做法是否要求SetDelayed 或RuleDelayed 表达式(此类名称已本地化)中的命名模式不使用大写字母?
例如,我认为大写字母以一种有用的方式扩展了命名空间,并在视觉上区分了小写 L 和 1。它们还允许以教科书的方式命名参数。
如果在未来版本中引入了新符号,命名模式应取代这些,现有代码不应中断。
如果使用现有的名称,例如 N 和 D,则会产生歧义,但我认为使用上下文和前端语法突出显示都可以缓解这种情况。
【问题讨论】:
-
+1 但是 1 认为 1owercase L 很容易与 1 区分开来,如果你的名字足够描述的话。此外,命名空间扩展的使用应谨慎考虑:命名一个 symbo1 myHome 和另一个 MyHome 是一个 c1assica1 bug 炖菜 ...
-
@belisarius 因为我喜欢简洁的编码,所以我的大多数模式名称都是单个字符,因此
l和1非常相似。同样,我怀疑我会混淆f[A_, a_] := ...中的符号。全球使用我同意你的观点,我让我的全球名称更冗长,但在这种特殊情况下,我想知道我是否可以改变我的做法。 -
反思“大多数”并不准确,但很多是单个字母,特别是简而言之,封装良好的替换规则。见this answer;我想在该代码中将
l : Line[__]更改为L_Line。 -
也许您应该使用比 mma 使用的默认 Courier 更好的字体来更好地区分
l和1:)
标签: wolfram-mathematica symbols names