
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?
Заматчишь оба, а он скажет - милок, а где дефолтный кейс?
так что норм работает