Является ли F # используемым языком для разработки окон .net

Я слышал о F #, и теперь у Microsoft есть парень, который ведет блог и кодирует в редмонде где-то в этом роде. Можете ли вы действительно написать GUI-код из F # (я бы хотел увидеть пример добавления кнопки в форму и подписки на событие onclick, например)

Имеет ли F # полный доступ ко всем .Net?

Мне очень любопытно, и я знаю, что могу заниматься Google, но мне бы хотелось услышать от кого-то, кто действительно использует этот язык.

Ответ 1

Да, вы можете, конечно, писать приложения WinForms - хотя вы бы не переопределили метод OnClick, вы подписались на событие Click.

Да, F # имеет полный доступ к .NET, хотя вы не получите очень идиоматический функциональный код, если используете много изменяемых типов.

Веб-сайт Tomáš Petříček F # имеет образец исходного кода из его книги (отказ от ответственности: я тоже связан с книгой, поэтому я явно предвзятым), который имеет примеры WinForms.

Ответ 3

Но, как говорит Джон Скит, у Томаса есть интересные примеры (особенно события фильтрации/трубопроводов), которые показывают, что я подозреваю, что это хорошая точка перекрестка, т.е. дизайн вашего С# GUI с дизайнером, а затем писать мозги в F #, перехватывая один с другим событиями.

Что я считаю очень хорошим подходом. Проектирование сложных графических интерфейсов без конструктора WinForms немного раздражает (хотя разница не так велика в WPF - F # не поддерживает конструктор WPF, но вы не теряете там много чего).

В любом случае, следите за обновлениями:-). Использование декларативной обработки событий (Event.filter, Event.map и друзей) довольно хорошо, но в некоторых случаях это не совсем то, что вы хотите. Я просто пишу главу об этом, и я думаю, что F # дает вам некоторые действительно потрясающие способы работы с графическими интерфейсами - исходный код будет свободно доступен в book веб-сайт, и я надеюсь, что напишу короткое введение для моего блога, а также после того, как книга будет сделана.

Ответ 4

Я фактически не использовал F #, только прочитал спецификации. Это может быть полезно для разработки WinForms, но моя немедленная реакция на это - "это не имеет большого значения". Пока вы используете компиляторы, совместимые с CLR, вы должны иметь возможность комбинировать сборки F # с другими, написанными на С#/IronPython/и т.д.

Да, F # может использовать .NET Framework, а сборки F # могут использоваться другими сборками .NET.

Моим советом было бы скомпоновать ваши функциональные библиотеки в F #, а затем использовать любой язык .NET, который вам нравится писать клиентские приложения.

Ответ 5

Вы можете написать код GUI из F #, но я не уверен, что вы ХОТИТЕ. Если вы похожи на тех, кто писал ваши графические интерфейсы С# в блокноте, то это, вероятно, вас не беспокоит. Лично я предпочитаю конструктора, и для F # нет никого, и, насколько я понял, его тоже не будет - что, вероятно, что-то говорит о предполагаемом использовании F #.

Но, как говорит Джон Скит, у Томаса есть интересные примеры (особенно события фильтрации/трубопроводов), которые показывают, что я подозреваю, что это хорошая точка перекрестка, т.е. дизайн вашего С# GUI с дизайнером, а затем писать мозги в F #, перехватывая один с другим событиями.