2009-02-17 2 views
10

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

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

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

ответ

16

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

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

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

+0

Спасибо, Джон, это было очень хорошо прочитано о каждом из приложений F #, и на самом деле хороший учебник по функциональному программированию в целом. Мне особенно нравится сравнение с C#. Cheers mate;) – Spence

+0

Не только Джон Скит доминирует в репутации, он также участвует в книге. Вы, сэр, напряжены. Я приветствую вас. –

+0

+1 для написания имени Томаша с полными регалиями – gjvdkamp

1

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

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

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

+0

То, что я понял, но какой язык использовать, если вы не можете использовать его, все, что вам нужно. Другая проблема заключается в том, что компиляторы в настоящее время не поддерживают несколько языков в одной сборке, поэтому производительность может пострадать в зависимости от того, что вы делаете в коде. – Spence

+0

@ Спенс, если то, что вы говорите, правда, там будет только один язык. Но разные языки имеют разные цели, применения и сильные стороны. Вы наверняка не поймаете ME, кодируя ОС в SQL в ближайшее время. – Benjol

1

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

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

+0

Дизайнер GUI - это целая причина, по которой C# так приятно проектировать. – Spence

3

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

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

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

+0

Спасибо за ваш вклад Tomas. Я читал ваш блог в MSDN. Не понимал, что вы тоже были связаны с Джоном Скитом. Маленький мир там ... – Spence

Смежные вопросы