@Fsharp_chat

Страница 768 из 772
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#

Vasily
24.10.2018
12:54:23
Все, что может .net

Указатели разыменовывать не может

Если ты об этом

Ayrat
24.10.2018
12:55:02
Указатели разыменовывать не может
стопе. Модуль Unsafe давно смотрел?)

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
А вот не умеет
NativePtr.read<int> ptr

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 Вот это можно юзать, если что, или это прототип?

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
вот про туплы я соглашусь пожалуй, всё остальное мимо вообще.

Vasily
24.10.2018
13:08:30
Старая статья
Канеш, старая

Ayrat
24.10.2018
13:08:41
только сейчас struct (1, 2) есть
Ага, но это надо везде с собой таскать

очень неудобно

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
Awful type constructor syntax. ну и с конструкторами рил наркомания если их несколько
много конструкторов обычно намекают что тут что-то не так

меня ещё в C# SimpleInjector отучил более одного конструктора делать в классе

там это отключаемое поведение, но чорт побери правильное

Artemy
24.10.2018
13:12:04
Да нет, норм там все
Ну сложнее синтаксис запоминается. То же самое касается остального ООП-синтаксиса. Например, объявление свойств. Большие различия в вариантах объявления.

Artemy
24.10.2018
13:13:12
Ну это хотя бы уникальная фича, так сказать (в C# нету).

Vlad
24.10.2018
13:13:34
Вот srtp это наркомания, да
нормальная наркомания

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
... уже год

Vlad
24.10.2018
13:14:58
Roman
24.10.2018
13:15:19
... уже год
Надо чтоб @Dolfik и @fvnever начали и все быстро закончится

Vagif
24.10.2018
13:33:48
Кстати. @VagifAbilov https://github.com/object/RabbitMqActors Вот это можно юзать, если что, или это прототип?
Нет, я это не советую юзать. Это была первая версия того, что мы использовали, но потом мы сильно это переделали.

@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
Вроде тогда проще на akka streams
Ты уже на новом месте пилить начал? Картбланш на технологии есть? F# и акка стримс?

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
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
type Abc=|One=1s
Не понял

Ayrat
24.10.2018
14:07:49
Ну как бы логично
кстати я проебался с синтаксисом. F# кидает варнинг даже на енамы

Паттерн енама же вызываетсятак EnumName.Case а не просто Case

так что для енамов F# работает!

Если у тебя есть енам вида type E = | A = 1s | B = 2s то если ты заматчишь только E.A, он спросит - милок, а как же E.B? Заматчишь оба, а он скажет - милок, а где дефолтный кейс?

так что норм работает

Не понял
1s - это литерал шорта

Страница 768 из 772