Ответ 1
Представьте, что в один прекрасный день вы захотите переписать свою библиотеку С# в F # для лучшего удобства использования. Вот пути, которые вы, скорее всего, возьмете:
Я фокусируюсь на пути "Императивный С# → Функциональный С# → Функциональный F # → Идиоматический F #". Чем более функциональна ваша библиотека С#, тем более удобна ваша библиотека в F #. Функциональный стиль помогает повысить композитоспособность и ближе к идиоматическому коду F #. Вдоль этих строк вы можете:
- Объявить неизменяемость по умолчанию. Если вы не знаете, нужно ли обновлять поле/свойство позже, сначала отметьте его
readonly
. - Следуйте стилю, основанному на выражениях и декларативном программировании. Операции LINQ являются хорошими примерами.
- Используйте неизменяемые коллекции или изменяемые коллекции неизменным способом. С введением неизменяемых коллекций С#, это должно быть проще, чем когда-либо прежде.
Изображение выше взято из F # для удовольствия и прибыли Портирование из серии С# в F #. Они очень полезны; зная, как концепции С# выражаются в F #, улучшат удобство использования вашей библиотеки.
Трудно избежать объектно-ориентированных функций С#. Помните, что вывод типа F # не очень хорошо работает с этими функциями. Вдоль линии поддержания иерархии объектов просто, вы должны уменьшить количество перегрузок элементов. Большое количество перегрузок элементов легко смущает проверку типа F #. Кроме того, не повредить распространение тонкой оболочки F # с вашей библиотекой С#. Некоторые вещи, которые вам нужно сделать, включают некоторые методы в функции модуля и создание Active Patterns для разложения иерархии объектов.