Ayrat
24.10.2018
12:52:27
Давай ещё раз, раньше я просто делал новые элементы в цикле явно, а теперь неявно делаю те же элементы функцией
Petr
24.10.2018
12:53:20
Слушай, ну это достаточно такой
глубокий вопрос
начиная от обычных консольных калькуляторов, заканчивая гейм дейвом и так далее
Artemy
24.10.2018
12:53:47
Это программированием называется. XD
Google
Ayrat
24.10.2018
12:53:48
Petr
24.10.2018
12:54:07
Я имею ввиду, что может F#
Ayrat
24.10.2018
12:54:23
Vasily
24.10.2018
12:54:23
Все, что может .net
Указатели разыменовывать не может
Если ты об этом
Ayrat
24.10.2018
12:55:02
Vasily
24.10.2018
12:55:14
Ayrat
24.10.2018
12:56:31
https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/nativeptr.fs
Vasily
24.10.2018
12:56:48
Наброшу, пожалуй: https://medium.com/@alexyakunin/crying-out-loud-what-i-like-dislike-in-f-c88e746dfcde
Смешная статья
Ayrat
24.10.2018
12:59:33
Google
Ayrat
24.10.2018
12:59:47
эт вам конечно не *
но в целом умеет
к тому же тип можно не указывать, компилятор доинферит
Я имею ввиду, что может F#
Короче, на твой вопрос боюсь неясно как ответить.
Потому что так же можно спросить - а что может Java? А что может Python?
Они все могут всё.
На джаве делают ML, а на питоне пилят веб-сервисы.
Возможно кто-то где-то в мире делает ОС на брейнфаке
Vasily
24.10.2018
13:03:17
Кстати. @VagifAbilov https://github.com/object/RabbitMqActors Вот это можно юзать, если что, или это прототип?
Ayrat
24.10.2018
13:05:41
смешно
Vlad
24.10.2018
13:07:03
You have to manually order your files in F# projects in order they must be processed by the compiler.
Any tuple type is a reference type in F#.
Roman
24.10.2018
13:07:40
Ayrat
24.10.2018
13:07:51
вот про туплы я соглашусь пожалуй, всё остальное мимо вообще.
Vlad
24.10.2018
13:08:21
Vasily
24.10.2018
13:08:30
Ayrat
24.10.2018
13:08:41
очень неудобно
Vlad
24.10.2018
13:08:56
Awful type constructor syntax.
ну и с конструкторами рил наркомания если их несколько
Roman
24.10.2018
13:09:17
Непривычно <> наркомания
Хотя обычно наркомания тоже непривычна
Google
Roman
24.10.2018
13:10:19
А иногда очень привыкабельна :D
Ayrat
24.10.2018
13:10:39
меня ещё в C# SimpleInjector отучил более одного конструктора делать в классе
там это отключаемое поведение, но чорт побери правильное
Artemy
24.10.2018
13:12:04
Да нет, норм там все
Ну сложнее синтаксис запоминается. То же самое касается остального ООП-синтаксиса. Например, объявление свойств. Большие различия в вариантах объявления.
Roman
24.10.2018
13:12:45
Artemy
24.10.2018
13:13:12
Ну это хотя бы уникальная фича, так сказать (в C# нету).
Vlad
24.10.2018
13:13:34
Ayrat
24.10.2018
13:13:55
Roman
24.10.2018
13:14:03
Ayrat
24.10.2018
13:14:13
синтаксис преотвратнейший
Vlad
24.10.2018
13:14:25
Roman
24.10.2018
13:14:47
Vlad
24.10.2018
13:14:49
... уже год
Roman
24.10.2018
13:14:52
Vlad
24.10.2018
13:14:58
Roman
24.10.2018
13:15:19
... уже год
Надо чтоб @Dolfik и @fvnever начали и все быстро закончится
Vagif
24.10.2018
13:33:48
@vshapenko Я все собираюсь написать в блог о том, что там было не так и как надо, но все времени нет.
Google
Vasily
24.10.2018
13:37:41
Ну можешь мне рассказать, я, мож, заюзаю :)
Vagif
24.10.2018
13:38:42
Главное, что там плохо работает - у такого актора не будет resilience. Если, к примеру, сервер RabbitMQ временно будет недоступен, а потом вернется, то актор с большой вероятностью будет не полностью операбельным
Т.е. актор получает вначале т.н. actor props, и если с ним что-то случается, то он заново воссоздается с этими же props. Поэтому эти пропс должны содержать всю информацию, требуемую для восстановления его работы в случае если его нужно будет заново создать. В той версии это не гарантируется.
Vasily
24.10.2018
13:40:42
Это, конечно, пичалька
Вроде тогда проще на akka streams
Vagif
24.10.2018
13:41:16
Вот-вот, я именно это хотел предложить. Там же есть адаптер для RabbitMQ.
Я мог бы со временем выложить нашу исправленную версию, но это нужно обговорить с руководством плюс время.
Но я попробовал AMQP адаптер из Akka Streams. Сегодня бы я вообще многое вначале пробовал делать через Akka Streams. Сокращает количество кода на порядок.
Petr
24.10.2018
13:46:03
Ребят, кто может обьяснить что такое %d и %A и чем они отличаются
Vagif
24.10.2018
13:47:31
%d для форматирования чисел, %A - для любого типа.
Petr
24.10.2018
13:48:14
Спасибо!
Maxim
24.10.2018
13:49:43
Доброго дня. А подскажите, вы F# в каких областях используете (web, big data, etc)?
Ayrat
24.10.2018
13:56:19
Vasily
24.10.2018
14:00:36
Ну карт бланша пока нет, но , думаю, выбью
Тут пока задачки уровня добавь две строчки в енам
Или перекинь вызов с хттп на раббит
Ayrat
24.10.2018
14:01:57
Серьёзно. Сколько надо сениоров чтобы добавить строчку в енам?
Vasily
24.10.2018
14:02:09
Ну хз
Ayrat
24.10.2018
14:03:02
Много, потом все места его использования надо проверить чтобы не проебать проверку нового кейса
Google
Vasily
24.10.2018
14:03:18
Ayrat
24.10.2018
14:03:33
Кстати ни разу енам в F# не юзал поэтому даже не знаю, есть ли по нему exhaustive pattern matching
Vasily
24.10.2018
14:03:37
Его можно было бы вообще тупо на строку заменить
Ayrat
24.10.2018
14:04:45
Проверил. По енаму варнингов нет на непроверку всех кейсов в F#
ожидаемо
лишний повод их не использовать
Vasily
24.10.2018
14:05:16
Ну как бы логично
Ayrat
24.10.2018
14:05:23
ну как бы да
Vasily
24.10.2018
14:05:40
Любое число можно привести к любому енаму
Ayrat
24.10.2018
14:06:22
а как сделать такой енам в F#?
enum Abc : short
{
...
}
Vasily
24.10.2018
14:06:28
А насчет акки. Тут в качестве ESB rabbit, поэтому подумываю маленький сервис запилить на акке
Ayrat
24.10.2018
14:06:44
ну или на лонгах
Vasily
24.10.2018
14:06:46
type Abc=|One=1s
Ayrat
24.10.2018
14:06:52
Ах ты ж
TheRainwildsKeeper
24.10.2018
14:07:25
Ayrat
24.10.2018
14:07:49
Паттерн енама же вызываетсятак
EnumName.Case
а не просто Case
так что для енамов F# работает!
Если у тебя есть енам вида
type E =
| A = 1s
| B = 2s
то если ты заматчишь только E.A, он спросит - милок, а как же E.B?
Заматчишь оба, а он скажет - милок, а где дефолтный кейс?
так что норм работает