【发布时间】:2011-08-17 15:38:02
【问题描述】:
我爱上了鲁比。在这种语言中,所有核心功能实际上都是方法。这就是为什么我更喜欢后缀符号的原因——当我要处理的数据放在匿名处理函数体的左侧时,例如:array.map{...}。我相信,它的优势在于代码易于阅读。
但是 Mathetica 是函数式的(是的,如果你愿意,它可以是程序性的)决定了一种风格,其中函数名称放在数据的左侧。正如我们在其手册中看到的那样,// 仅在它是一些没有参数的简单函数时使用,例如list // MatrixForm。当函数需要很多参数时,写手册的人,使用语法F[data]。
没关系,但我的问题是F[f,data],例如Do[function, {x, a, b}]。大多数 Mathematica 函数(如果不是全部)的参数完全按照这个顺序 - [function, data],而不是 [data, function]。由于我更喜欢使用纯函数来保持命名空间干净而不是在我的笔记本中创建大量命名函数,所以参数 function 可能太大了——太大了,那个参数 data 将放在第 5-20 行函数调用行之后的代码。
这就是为什么有时,当 evil Ruby 的天性使我受到控制时,我会以 postfix 的方式重写这些函数:
因为这对我很重要,所以纯函数(可能是大代码)是直接从处理数据中放置的。是的,我做到了,我很高兴。但是有两点:
- 这会导致 Mathematica 的高亮解析器问题:后缀符号中的
x以蓝色突出显示,而不是绿松石色; - 每次查看 Mathematica 手册时,我都会看到类似这样的示例:
Do[x[[i]] = (v[[i]] - U[[i, i + 1 ;; n]].x[[i + 1 ;; n]])/ U[[i, i]], {i, n, 1, -1}];,这意味着......见鬼,他们认为它易于阅读/支持/等等?!
所以这两件事让我在这里问这个问题:我是不是很坏,使用我的 Ruby 风格,我应该像这些人那样编写代码,还是 好的,我不用担心,应该随心所欲地写吗?
【问题讨论】:
-
我认为您可能对与问题内容类似的演示文稿"Mathematica and Programming Style. A New Mathematica Programming Style" by Kris Carlson 感兴趣(感谢@TomD 提供参考)。
-
rcollyer、acl 和 Mr.Wizard 的回答是最受关注的。感谢大家解释可能的问题。
标签: coding-style wolfram-mathematica postfix-notation