
Ivan
03.03.2018
20:13:12
Тяжело писать в вебе.

Evgeniy
03.03.2018
20:14:01
Компиляция реализаций тоже нужно поправить.

Ivan
03.03.2018
20:14:16
Я там еще пример зачем набросал. А то не ясно ведь ?
Смотрю

Google

Ivan
03.03.2018
20:15:41
Чтоб совсем чисто, действительно для компилера сложно. Но можно поробовать

Evgeniy
03.03.2018
20:16:38
Из концептуального — мне не нравятся связанные типы. Это же просто дополнительный параметр типа. Почему бы его просто не записать так?
Будет предложение про multi-parameter type classes.

Ivan
03.03.2018
20:20:26
Сам так же думал, но понял зачем. Смотри если я реализую тот же Iterator, то тип по какому он итерируется может быть выдернут из реализации, поэтому мне его знать не нужно. Спер из Rust и Scala.
Мульти параметр - наваяю сампл

Evgeniy
03.03.2018
20:23:52
Второй момент, в Classes for the Masses не вводится новый синтаксис для трейтов, только аннотации [<Trait>] и [<Witness>]. Было бы неплохо привести к такому виду.
Пример посмотрю завтра. Сейчас спать. :)

Ivan
03.03.2018
20:24:49
Сделаю, то же завтра ?

P
03.03.2018
22:27:52
А trait семантически идентичен type class?

Ivan
03.03.2018
22:30:34
Вроде да. И то и другое поведение - данные

Friedrich
04.03.2018
04:46:02

Google

Friedrich
04.03.2018
04:54:35

Evgeniy
04.03.2018
08:04:01
https://github.com/fsharp/fslang-suggestions/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved-in-principle+label%3Aproposed-priority
Новый ярлык появился.

Friedrich
04.03.2018
08:12:53

Evgeniy
04.03.2018
08:15:18

Fill
04.03.2018
08:36:00
Можно мини ревью?
создание последовательности рандомных чисел от 0 до max
let rec uniqRand set max=
match Set.count set = max with
| true -> None
| false ->
let r = new System.Random()
let i = r.Next max
if Set.contains i set then uniqRand set max
else Some i
let rgen max acc =
match uniqRand acc max with
| None -> None
| Some item -> Some (item, Set.add item acc)
let rand max =
Seq.unfold (rgen max) Set.empty
естественно, без повторяющихся

Pavel
04.03.2018
08:48:42
seq { 1..max } |> Seq.orderBy Guid.NewGuid
Сложность алгоритма нужно смотреть, само собой
Но тот, чо выше - будет последние искать оооочень долго
Вероятно sequence тут не нужен и можно просто массив отсортировать (я про свой)
Ну и вообще - за этим в Гугл.

Fill
04.03.2018
08:52:39
окей, спасибо

Friedrich
04.03.2018
08:53:03
Ага, это общая альтернативная идея — сгенерить N заведомо уникальных чисел, а потом пошаффлить (необязательно так, как указал Павел; мне кажется, можно и получше сделать).

Pavel
04.03.2018
08:54:09
Я лежу в ванной и читаю телеграм, у меня не эффективный алгоритм. За правильным - в Гугл.

Fill
04.03.2018
08:54:12
я ведь правильно понимаю, что сортировка к seq примениться, как только я возьму хотя бы один итем?

Pavel
04.03.2018
08:54:53
Да, когда создастся энумератор
Это же IEnumerable

Friedrich
04.03.2018
08:56:59

Google

Aleksander
04.03.2018
09:51:21
Guid.NewGuid операция сама по себе довольно "дорогая", если сортировать по тому-же random.Next(), будет быстрее

Evgeniy
04.03.2018
10:02:12
Vladimir должен в шаффлинге шарить.

Fill
04.03.2018
10:02:28
штука в том, что в этом кейсе есть возможность сделать это дёшево
я просто не вижу, как
но я придумаю)

Klei
04.03.2018
10:34:10
но я придумаю)
Легко допиливается для последовательности произвольной длины.
http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0-%D0%99%D0%B5%D1%82%D1%81%D0%B0

Fill
04.03.2018
10:35:55
ох
элементарно жи
позор на мою голову

Klei
04.03.2018
10:39:52
Норм, я в первый раз на фенвике сделал.

Fill
04.03.2018
10:41:48
так, если я применю этот алгоритм к секвенсу, мне всё же придётся заплатить лишним О n
или я не понимаю чего-то

Klei
04.03.2018
10:47:08
Тебе нужна перестановка меньше чем за O(n)?
Все равно в этом месте надо будет собрать новую коллекцию.

Vladimir
04.03.2018
11:01:20
Vladimir должен в шаффлинге шарить.
Все правильно уже сказали) https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle Реализации можно посмотреть в треде https://github.com/fsharp/fslang-suggestions/issues/508
А знает кто-нибудь как одновременно запаблишить все проекты в солюшне?

Roman
04.03.2018
12:09:17

Vladimir
04.03.2018
12:09:24
Я сейчас паблишу по очереди, 6 проектов для паблиша, с либами 12, но получается медленно
Да, в отдельности, на каждый проект свой докер контейнер
Самая большая проблема в Paket - он каждый проект ресторит заново и ищет зависимости, а хотелось бы один раз для всех это сделать

Google

Aleksander
04.03.2018
12:30:01
А как докер файл выглядит?

Vladimir
04.03.2018
12:32:31
FROM microsoft/dotnet:2-runtime
WORKDIR /app
COPY artifacts .
ENTRYPOINT ["dotnet", "MyProject.dll"]
соотвтственно перед этим каждому проекту я делаю
dotnet publish -c Release -o artifacts

Aleksander
04.03.2018
12:45:03
А, ты значит не в контейнере билдишь. Если билд делать тоже в контейнере, то там вроде бы возможно отделить рестор пакетов от билда исходников. Пакеты не очень часто меняются, поэтому этот слой будет почти всегда браться из кэша.

Vladimir
04.03.2018
12:47:44
Я думаю нет разницы где билдить. Если есть возможность ускорить билд внутри контейнера, то она есть и без него)
Билд солюшна то один раз происходит например
Почему бы не иметь возможность сделать и паблиш солюшна)

Ivan
04.03.2018
12:52:28
Publish solution. Из корня

Vladimir
04.03.2018
12:55:36
не вижу такой кнопочки)

Ivan
04.03.2018
12:57:23
в корне dotnet publish -o %cd\artifactacts\ - это под виндой, под линухом вместо %cd что то еще, простите коллегии, не помню

Vladimir
04.03.2018
12:57:52
спс, сча попробую)

Ivan
04.03.2018
12:59:47
Вот вариант gitlab-ci, который я использую:
stages:
- build
- pack
- publish
build:
variables:
PROJECT: YouDo.Data
tags:
- net47
- netstandard2.0
stage: build
except:
- /^(\d+.\d+.\d+)(-(\w+(.\w+)*))?$/
script:
- echo Restoring packages
- echo Building
- dotnet build
- echo "Build complete"
pack:
variables:
PROJECT: YouDo.Data
tags:
- net47
- netstandard2.0
stage: pack
only:
- /^(\d+.\d+.\d+)(-(\w+(.\w+)*))?$/
script:
- echo Packing
- dotnet pack -c Debug —include-symbols —include-source -o "%cd%\artifacts\"
- echo "Publishing nuget packages"
artifacts:
expire_in: 31d
paths:
- artifacts/*.nupkg
publish:
variables:
PROJECT: YouDo.Data
tags:
- net47
- netstandard2.0
stage: publish
only:
- /^(\d+.\d+.\d+)(-(\w+(.\w+)*))?$/
- manual
script:
- echo "Publishing nuget packages"
- dotnet nuget push —force-english-output -s YouDo -k "%NUGET_TOKEN%" "%cd%"\artifacts\*.nupkg"


Vladimir
04.03.2018
13:05:52
Круто, работает, спасибо) Правда паблишит не в artifacts, а в \Í\artifacts\
dotnet publish -o artifacts - а вот так правильно паблишит)

Roman
04.03.2018
13:08:04

Ivan
04.03.2018
13:08:11
Да

Roman
04.03.2018
13:08:41
Да
Есть там в проде f# код?

Ivan
04.03.2018
13:09:04
Нету ? Нас там 2

Roman
04.03.2018
13:09:30

Google

Ivan
04.03.2018
13:09:54
Нет, он пока падован ?

Roman
04.03.2018
13:10:21

Ivan
04.03.2018
13:10:41
Я ж не могу заставить ?
Коллеги, а не провести ли нам опрос. Прям здесь. Если fsharp в продакшен кто сеолько денег хочет?
С эти хоть к начальству будет с чем идти. Все ж f#писты в среднем сильнее c#пистов
Хоть пару команд собрать для примера

Диёр
04.03.2018
13:18:51

Ivan
04.03.2018
13:20:14
Это в мире, а я в реале. Вот если бы я команду собирал, кто за сколько пошел
Плюс доп условия
А то с этим.. У меня и кложа, и раст, и эликсир, и го, и f#, и scala - а зарплата намного не та
Да к опросу, Москва или Казань. С переездом
Я тогда спазу к начальству пойду.
Если хотя бы 5 наберем

Vlad
04.03.2018
14:33:46
В среднем по США *

Диёр
04.03.2018
14:34:07
В среднем по сша там отдельный график был

Fill
04.03.2018
15:07:28
я сейчас ищу работу в мск, если был бы кейс с F#, на любые бабки бы пошёл

Sergey
04.03.2018
17:18:14

Fill
04.03.2018
17:43:22
ну уж 150 чёт совсем мало

Roman
04.03.2018
17:44:36

Fill
04.03.2018
17:45:00
в моей практике от == столько и готовы платить максимально
и блин, F# девелоперы - редкость, by default больше должно быть