2013-03-13 4 views
4

Я сейчас читаю функциональное программирование реального мира, и в нем кратко упоминаются операторы in-fix как одно из основных преимуществ пользовательских операторов. Существуют ли какие-либо стандарты для использования или отсутствия пользовательских операторов в F #? Я ищу ответы, эквивалентные this.Стандарты для использования пользовательских операторов

Для справки, вот цитата, к которой @JohnPalmer имеет в виде из here:

3.8 Operator Определение 

Избегайте определения пользовательского символические операторов в F # -facing библиотечных проектов.

Пользовательские операторы необходимы в некоторых ситуациях и являются весьма полезными нотационными устройствами в пределах большого кода реализации . Для новых пользователей библиотеки функции, называемые , часто проще в использовании. Кроме того, пользовательские символические операторы могут быть трудно документировать, и пользователям затруднительно найти справочную информацию об операторе из-за существующих ограничений в IDE и поисковых системах.

В результате, как правило, лучше всего опубликовать свою функциональность как названные функции и элементы.

+2

Почему этот вопрос не является конструктивным? Знание стандартов сообщества о том, когда использовать/не использовать языковые функции, важно для написания читаемого кода. И от вопроса о том, что является хорошим вопросом, чтобы спросить: «практические, ответственные проблемы, которые уникальны для профессии программирования» – mydogisbox

+0

Согласно Microsoft, ответ почти никогда: http://research.microsoft.com/en-us /um/cambridge/projects/fsharp/manual/fsharp-component-design-guidelines.pdf –

+0

@JohnPalmer Хорошая находка. В нем конкретно говорится, что они не используют их в стиле F #, стоящем перед _library_. Я обновил свой вопрос немного подробнее. – mydogisbox

ответ

3

операторы пользовательских инфиксные являются хорошая особенность в некоторые ситуации, но когда вы используете их, вы должны быть очень осторожны, чтобы сохранить ваш код читаемым - поэтому рекомендация F руководящих принципов # дизайн применяется наиболее из время. Если бы я снова писал «Функциональное программирование в реальном мире», я был бы немного в восторге от них, потому что их действительно следует использовать осторожно :-).

Тем не менее, есть некоторые библиотеки F #, которые хорошо используют пользовательские операторы, и иногда они работают очень хорошо. Я думаю, что FParsec (библиотека комбинаторов парсеров) - это один случай - хотя, возможно, их слишком много. Другим примером является XML DSL, который использует @=.

В общем, когда вы пишете обычную библиотеку F # F #, вы, вероятно, не хотите их раскрывать. Однако, когда вы пишете доменный язык, пользовательские операторы могут быть полезны.

+0

DSL действительно кажется областью, где они могут вызвать наименьшее количество путаницы. Спасибо за вход! – mydogisbox

+0

FYI: некоторые из ваших ссылок на профили сломаны. – mydogisbox

Смежные вопросы