Краткое исследование F #

Я писал полнофункциональные веб-приложения на Haskell с использованием функционального реактивного программирования ( Reflex-FRP ) уже 3 года. Любопытство застало меня, чтобы узнать, что FP языки, отличные от Haskell, могут предложить в этой области

Моими критериями были:

  • Должен быть функциональным языком программирования
  • Следует компилировать в JS или Wasm (см. Нет JavaScript )
  • Должен работать изначально на бэкэнде без nodeJS (исключает подобные PureScript )

GHCJS Haskell (особенно при использовании с Обелиск) все это удовлетворяет, но есть одна проблема: будущее GHCJS (которое не обновлено через год) и Reflex, кажется, находится в руках одной маленькой компании , обсидиановые системы.

Это привело меня к F # , гибридный язык программирования FP («гибридный», потому что он поддерживает ООП, что необходимо для интеграции с остальной частью экосистемы .NET). Я задокументировал свои знания здесь .

Что меня впечатлило:

  • Полный доступ ко всему . NET экосистема библиотек и фреймворков (который больше, чем у Haskell).
  • Экосистема .NET 5.0 – одно удовольствие работать с ней (и она хорошо работает в Linux с VSCode ); и вы можете создавать кроссплатформенные приложения проще , чем в Haskell, в том числе на мобильных устройствах.
    • Если бы я начал разработку Нейрон сегодня я бы определенно рассмотрел F # (но см. ниже).
  • У Microsoft есть отличный полный стек история веб-разработки; и они поддерживают WebAssembly ( Blazor ), включая структуру для связи в реальном времени ( SignalR ).
    • В F #, Bolero сегодня - это идеальный фреймворк для использования вышеупомянутой технологии.
  • Меня обнадеживает то, что я могу положиться на Microsoft для продвижения полнофункциональной веб-разработки более чем одной небольшой консультационной компании (Obsidian Techniques) с непрозрачным открытым исходным кодом
    • Тем не менее, я надеюсь, что Asterius догоняет, и сообщество воодушевляется для распространения целой новой экосистемы полнофункциональной разработки Инструменты ent в Haskell не обязательно привязаны к Reflex.

Однако некоторые вещи в экосистеме Haskell лучше.

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

Смотрите также