Как стать автором
Обновить
6.8

F# *

Язык из семейства языков .NET Framework

Сначала показывать
Порог рейтинга
Уровень сложности

F#5: Операторы

Время на прочтение5 мин
Количество просмотров3K
Я намеревался написать 1/2 достойного поста в блоге об операторах F #, но потом я подумал, и, честно говоря, я не мог видеть слишком много достоинств в простом повторении того, что уже свободно доступно на MSDN, где перечисляются ВСЕ операторы F#.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии7

F#4: Let / Use / Do

Время на прочтение3 мин
Количество просмотров2.1K
В этом посте мы рассмотрим привязки в F#, в частности мы рассмотрим Let / Use / Do. Теперь вы, возможно, спрашиваете себя, что такое привязки, и, поскольку мы еще не рассмотрели их, сейчас самое время поговорить об этом.

Проще говоря, привязка связывает идентификатор со значением или функцией.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

F#3: Форматирование текста

Время на прочтение3 мин
Количество просмотров3.6K
При работе с любым языком вам, скорее всего, нужно будет отформатировать текст, и F# ничем не отличается.

Поскольку F# является языком .NET, мы всегда можем использовать Console.WriteLine (..) и String.Format (..), где мы можем использовать любой из обычных форматеров, которые вы использовали в своем обычном коде .NET.

Однако F# также поддерживает более похожий на синтаксис метод C, который доступен в модуле Core.Printf. Одна функция внутри него может использоваться вместо использования класса Console.WriteLine (..) .NET.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии3

F#2: Среда FSI

Время на прочтение2 мин
Количество просмотров2.4K
Как многие из вас знают, я парень из C#. Поэтому, если я просто хочу что-то попробовать, я обычно просто открываю LINQPad и пробую что-то там. Если всё разрастается и мне нужно больше контроля над экспериментами, я откажусь от LINQPad и разверну приложение ConsoleApplication в Visual Studio. Оба эти подхода работают нормально, но было бы неплохо, если бы существовала какая-то среда, в которой вы могли бы попробовать что-то внутри самой Visual Studio, даже не создавая новый проект.

К счастью, в F# это есть.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии4

Истории

«Освоить F# не сложнее, чем Entity Framework или WPF»: интервью со Скоттом Влашиным

Время на прочтение17 мин
Количество просмотров9.9K


Кого расспрашивать про F#, как не человека, посвятившего этому языку подробный сайт? Скотт Влашин создал ресурс «F# for Fun and Profit», знакомый многим хабравчанам: на Хабре переводили оттуда и серию статей «Функциональное мышление», и статью «Железнодорожно-ориентированное программирование».

А в ноябре он выступит в Москве на нашей конференции DotNext с докладом «The power of composition». И в преддверии этого выступления мы расспросили его про F# и вообще функциональное программирование.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии13

API на F#. Доступ к модулям приложения на основе ролей

Время на прочтение6 мин
Количество просмотров4.9K

ASP.NET Core по стандарту предлагает настраивать доступ к api с помощью атрибутов, есть возможность ограничить доступ пользователям с определенным claim, можно определять политики и привязывать к контроллерам, создавая контроллеры для разных ролей
У этой системы есть минусы, самый большой в том, что смотря на этот атрибут:


[Authorize(Roles = "Administrator")]
public class AdministrationController : Controller
{
}

Мы не получаем никакой информации о том, какими правами обладает администратор.

Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии3

Пример Model-View-Update архитектуры на F#

Время на прочтение8 мин
Количество просмотров6.7K

Кому-то не нравился Redux в React из-за его имплементации на JS?


Мне он не нравился корявыми switch-case в reducer'ах, есть языки с более удобным pattern matching, и типы лучше моделирующие события и модель. Например, F#.
Эта статья — разъяснение устройства обмена сообщениями в Elmish.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии5

Книга «Конкурентность и параллелизм на платформе .NET. Паттерны эффективного проектирования»

Время на прочтение8 мин
Количество просмотров11K
image Привет, Хаброжители! Книга Рикардо Террелли (Riccardo Terrell) дает представление о рекомендуемых методах создания конкурентных и масштабируемых программ в .NET, освещая преимущества функциональной парадигмы и предоставляя соответствующие инструменты и принципы, позволяющие легко и правильно поддерживать конкурентность. В итоге, вооружившись новыми навыками, вы получите знания, необходимые для того, чтобы стать экспертом в предоставлении успешных высокопроизводительных решений.

Если вы пишете многопоточный код на .NET, то эта книга может вам помочь. Если вы заинтересованы в использовании функциональной парадигмы для упрощения конкурентного программирования и максимального повышения производительности приложений, то данная книга станет для вас важным руководством. Она принесет пользу любым разработчикам на .NET, желающим писать конкурентные, реактивные и асинхронные приложения, которые масштабируются и автоматически адаптируются к имеющимся аппаратным ресурсам везде, где бы ни работали такие программы.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии2

Функциональное мышление. Часть 11: Финал

Время на прочтение11 мин
Количество просмотров9.6K

Сегодня мы заканчиваем нашу серию статей о функциональном программировании. Получилось 11 частей. Я считаю, что это достижение. В этой статье реализуем простой стековый калькулятор (также известный как "обратная Польская нотация"). Реализация практически полностью построена на функциях, лишь с одним специальным типом, и вообще без сопоставления с образцом, так что это превосходный полигон для концепций, затронутых в нашей серии.



Хочу отдельно поблагодарить @kleidemos. Именно он выступил главным переводчиком и менеджером всей серии статей. Спасибо!


Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии3

Как глубока кроличья нора? CLRium #5: Garbage Collector

Время на прочтение2 мин
Количество просмотров5.2K

Мир несется вперед, движимый прогрессом и конкуренцией. Нам с вами нереально повезло: ведь для нас работают величайшие умы, создавая поистине серъезные механизмы: компиляторы, IDE, базы данных. Делают их так, что мы получаем истинное удовольствие, используя их.


Один из этих механизмов — это работа подсистемы управления памятью платформы .NET. И если раньше никто не имел ни малейшего понятия как оно работает, то теперь, когда у нас есть исходники, все секреты открыты. Теперь видно абсолютно все подробности работы ядра платформы: и это действительно завораживает. Например, если ранее мы думали, что выделение памяти — это просто сдвинуть указатель, то теперь стало ясно что все несколько сложнее и интереснее. Это выверенный, прекрасный алгоритм, не оставляющий вопросов: а почему сделано именно так.


Второй очень важный момент — полное отсутствие времени между работой и семьей чтобы всё выучить и понять: разобраться с аспектами работы платформы. Так вот данный семинар — прекрасная возможность не тратя десятки часов на вычитку блогов и книг раз и навсегда разобраться, как же всё функционирует. И поверьте, я очень постараюсь чтобы каждый момент был ясен всем



CLRium #5: Garbage Collector пройдет 13 и 14 апреля в Санкт-Петербурге и 20 апреля — в Москве, а все подробности — под катом

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии4

Функциональное мышление. Часть 10

Время на прочтение10 мин
Количество просмотров12K

Вы представляете, это уже десятая часть цикла! И хотя до этого повествование было сфокусировано на чисто функциональном стиле, иногда удобно переключиться на объектно-ориентированный стиль. А одними из ключевых особенностей объектно-ориентированного стиля являются возможность прикреплять функции к классу и обращение к классу через точку для получения желаемого поведения.



Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии0

Функциональное мышление. Часть 9

Время на прочтение10 мин
Количество просмотров5.6K

Это уже 9 часть серии статей по функциональному программированию на F#! Уверен, на Хабре существует не очень много настолько длинных циклов. Но мы не собираемся останавливаться. Сегодня расскажем про вложенные функции, модули, пространства имен и смешивание типов и функций в модулях.



Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии2

Подайте заявку на участие в Applied F# Challenge

Время на прочтение2 мин
Количество просмотров899

F# Software Foundation недавно объявил о своей новой инициативе  —  Applied F# Challenge! Мы призываем вас принять участие и отправить свои материалы о F # в Azure через participation form.


Applied F# Challenge это новая инициатива, направленная на то, чтобы побудить студентов к всестороннему обучению, а также чтобы раскрыть больше интересных, уникальных и передовых приложений F#.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург

Функциональное мышление. Часть 8

Время на прочтение5 мин
Количество просмотров8K

Привет, Хабр! Мы с небольшим запозданием возвращаемся с новогодних каникул с продолжением нашей серии статей про функциональное программирование. Сегодня расскажем про понимание функций через сигнатуры и определение собственных типов для сигнатур функций. Подробности под катом!



Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии6

Я растерял веру в разработку, выгорел, но меня спас культ инструмента

Время на прочтение7 мин
Количество просмотров71K


Я часто критикую технологии, которые кажутся мне неправильными, и в ответ получаю не только аргументы, но и откровенную злобу, обиду, и даже в морду.

Уколы в адрес технологий разрабы воспринимают на свой счет. Культ инструмента — очень странная штука, которую не объяснить логически. Одни говорят, что культ есть у всех, потому что мышление плотно сплетается с япом. Другие говорят, это джунироская болезнь — ты впервые что-то написал, оно получилось, от восторга ты посчитал свой яп чудом божьим.

Чем бы оно ни было, я эту фигню не понимал никогда.

Сторонники культов кажутся мне непроходимыми тупицами. А я всегда пытаюсь понять, как тупицы стали тупицами, и почему тупицей не стал я. Начал думать и бам! — понял, что все-таки стал. Я тупица-культист, который восхваляет F#. И конечно за этим есть история.
Читать дальше →
Всего голосов 154: ↑135 и ↓19+116
Комментарии143

Функциональное мышление. Часть 7

Время на прочтение12 мин
Количество просмотров8.3K

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



Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Функциональное мышление. Часть 6

Время на прочтение5 мин
Количество просмотров6.4K

Продолжаем нашу серию статей о функциональном программировании на F#. Сегодня расскажем об ассоциативности и композиции функций, а также сравним композицию и конвейер. Заглядывайте под кат!



Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

Функциональное мышление. Часть 5

Время на прочтение7 мин
Количество просмотров10K

В предыдущем посте о каррировании мы увидели, как функции с несколькими параметрами дробятся на функции поменьше, с одним параметром. Это математически корректное решение, однако есть и другие причины так поступать — это также приводит к очень мощной технике, называемой частичное применение функций. Такой стиль очень широко используется в функциональном программировании, и очень важно его понимать.



Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии1

Функциональное мышление. Часть 4

Время на прочтение8 мин
Количество просмотров9.8K

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


Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии5

F# меня испортил, или почему я больше не хочу писать на C#

Время на прочтение13 мин
Количество просмотров65K

Раньше я очень любил C#


Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.


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


А потом я из любопытства попробовал F#.

Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии327