F#: нет ли никакой UI (как WPF) для него?

Это называется само-вызываемой функцией.

То, что вы делаете, когда вызываете (function(){}), возвращает функциональный объект. Когда вы добавляете () к нему, он вызывается, и все в теле выполняется. ; обозначает конец оператора, поэтому второй вызов завершается неудачей.

19
задан iceangel89 28 June 2009 в 11:41
поделиться

6 ответов

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

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

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

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

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

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

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

35
ответ дан 30 November 2019 в 01:59
поделиться

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

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

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

13
ответ дан 30 November 2019 в 01:59
поделиться

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

4
ответ дан 30 November 2019 в 01:59
поделиться

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

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

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

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

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

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

2
ответ дан 30 November 2019 в 01:59
поделиться

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

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

1
ответ дан 30 November 2019 в 01:59
поделиться

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

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

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

5
ответ дан 30 November 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: