F #: нет ли для него интерфейса (например, WPF)? - PullRequest
19 голосов
/ 28 июня 2009

Я недавно видел несколько видео на F #. кажется, он используется в основном только для обслуживания или классов? я не вижу приложения "F # WPF" в ​​бета-версии VS2010?

Ответы [ 7 ]

35 голосов
/ 28 июня 2009

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

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

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

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

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

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

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

13 голосов
/ 22 марта 2012

С F # 3.0 и провайдером типа XAML можно создать конструктор WPF для F # в Visual Studio 11. См. http://www.navision -blog.de / 2012/03/22 / wpf -Дизайнер-для-е /

13 голосов
/ 28 июня 2009

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

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

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

5 голосов
/ 02 октября 2009

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

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

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

4 голосов
/ 28 июня 2009

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

2 голосов
/ 28 июня 2009

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

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

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

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

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

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

1 голос
/ 28 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...