Подтвердить что ты не робот

F #: нет ли для него интерфейса (например, WPF)?

Недавно я увидел несколько видео на F #. кажется, он используется главным образом для Службы или Классов только? я не вижу приложение "F # WPF" в VS2010 Beta?

4b9b3361

Ответ 1

На самом деле у F # есть некоторые очень красивые конструкции для создания приложений с управляемым событиями, например События первого класса, Выражения объекта, вызывая средства определения свойств из конструктора, например:

new Form(Text="My Window Title", Width=600, Height=400),

и многое другое.

Однако создание конструктора форм в VS требует CodeDom для вашего языка. Текущая архитектура CodeDom отлично работает, если ваш язык выглядит точно так же, как С# или VB; он не поддается генерации кода F # (это из веб-трансляции или интервью, которое я не могу найти сейчас). Это также требует частичных классов, которые, если я правильно помню, не поддерживаются на языке с Beta 1. Вместо того, чтобы сосредоточиться на поддержке дизайнеров в первом выпуске, команда F # решила потратить свои ресурсы на улучшение других частей языка, таких как асинхронное и параллельное программирование и т.д.

Это означает, что у вас есть как минимум 4 варианта создания пользовательского интерфейса в F #:

  • Пишите все UI-код вручную, что отлично подходит для простых приложений;
  • Создайте свой код F # как библиотеку для обработки "жестких частей", таких как асинхронный и параллельный код или вычислительный центрированный код, и вызовите его из С#/VB;
  • Создайте свой код пользовательского интерфейса как библиотеку С#/VB, и оба передайте его из F # и делегируйте обработку событий в F #; или
  • Используйте DSL или Выражение вычисления (монада) упростить создание пользовательского интерфейса вручную (просто обнаружил это при поиске других ссылок в этом ответе).

Из них вызов библиотеки С# UI из F # может быть наиболее гибким, сохраняя при этом привычную парадигму. Но, используя выражения вычислений для быстрого создания пользовательского интерфейса вручную, безусловно, стоит посмотреть.

Ответ 2

Конечно, вы можете создавать графические интерфейсы в F # - в конце концов, это просто еще один язык .NET.

Книга Томаса Петричека " Функциональное программирование для реального мира" (с которой я немного помог) имеет различные примеры GUI. Исходный код доступен для скачивания, если вы хотите увидеть примеры.

По общему признанию, некоторые аспекты программирования GUI не очень хорошо соответствуют функциональному стилю, так как там много мутаций, но есть способы и средства для этого :)

Ответ 4

Мы продаем коммерческую библиотеку под названием F # для визуализации, которая написана на 100% коде F # и использует WPF для предоставления интерактивной графики с набранной математикой из вашего кода F #:

alt text
(источник: ffconsultancy.com)

Так что, безусловно, можно писать приложения с графическим интерфейсом на F # с использованием WPF.

Ответ 5

Это язык .NET, поэтому он может использовать библиотеку классов .NET. Это означает Winforms, WPF или что-нибудь еще, что вы можете использовать в С#.

Ответ 6

Обновлено по ссылке Джеймса Хугарда

В настоящее время F # не будет использоваться для графических интерфейсов, потому что для него это не самый важный вариант использования. Из Блог Don Syme:

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

Хотя теоретически вы можете использовать F # и стандартные библиотеки GUI, если вам нужен графический интерфейс, вы должны использовать VB или С#:

Пользователи F # должны использовать инструменты разработчика Visual Studio для генерации кода С# или Visual Basic и включения этих компонентов в свои приложения F #.

В долгосрочной перспективе "ориентированные на презентацию инструменты разработчика, которые генерируют код F #", согласно Syme, "безусловно выполнимы".

Ответ 7

Конечно, вы также можете использовать все классы WPF из F #. Вы можете создавать Windows, элементы управления и все остальное из F #, а также иногда использовать его с консоли F #.

Он не так тесно интегрирован в Visual Studio, как С# или VB, но, как вы можете видеть в комментариях, поддержка дизайнера в будущем возможна. Думаю, нам придется ждать до тех пор (или использовать другие инструменты).