Я влюблен в Ruby. В этом языке все основные функции фактически являются методами. Поэтому я предпочитаю постфиксную нотацию - когда данные, которые я хочу обработать, размещаются слева от тела функции анонимной обработки, например: array.map {...}
. Я считаю, что у этого есть преимущества в том, насколько легко этот код читать.
Но Mathetica, будучи функциональной (да, она может быть процедурной, если хотите), диктует стиль, в котором имя функции помещается слева от данных. Как мы видим в его руководствах, //
используется только тогда, когда это какая-то простая функция без аргументов, например list // MatrixForm
. Когда Function требуется много аргументов, люди, написавшие руководства, используют синтаксис F [data]
.
Это было бы хорошо, но моя проблема в случае F [f, data]
, например Do [function, {x, a, b}]
. Большинство функций Mathematica (если не все) имеют аргументы именно в этом порядке - [функция, данные]
, а не [данные, функция]
. Поскольку я предпочитаю использовать чистые функции, чтобы сохранить пространство имен в чистоте, вместо создания множества именованных функций в моем блокноте, аргумент function
может быть слишком большим - настолько большим, что аргумент data
будет размещать на 5-20 строке кода после строки с вызовом функции.
Поэтому иногда, когда evil Ruby-природа берет меня под контроль, я переписываю такие функции постфиксным способом:
] Поскольку для меня важно, чтобы чистая функция (потенциально большой код) размещалась сразу после обработки данных. Да, я делаю это, и я счастлив. Но есть две вещи:
x
в постфиксной нотации выделяется синим цветом, а не бирюзовым; Do [x [[i]] = (v [[i]] - U [[i, i + 1 ;; n]]. x [[i + 1 ;; n]] » / U [[i, i]], {i, n, 1, -1}];
, что означает ... черт, они думают, что это легко читать / поддерживать / и т. Д.?! Итак эти две вещи заставили меня задать этот вопрос здесь: такой ли я плохой мальчик, что использую свой стиль Ruby, и должен ли я писать код, как эти ребята , или это нормально, и я не «Не о чем беспокоиться , и должен ли я писать так, как мне нравится?