
Ayrat
19.10.2018
17:41:27
Да, это патерн вида
Что угодно типа стринг или null

Klei
19.10.2018
17:43:11
Капец. Я вообще забыл о том, что в подобных выражениях можно юзать несколько паттернов.

Roman
19.10.2018
19:11:01

Ayrat
19.10.2018
19:11:45
Это ужасно
да. Из сишарпа только какое-то говно приходит

Google

Roman
19.10.2018
19:12:22
Привет
Привет
Привет

TheRainwildsKeeper
19.10.2018
20:27:57
Ionide на маке требует моно, или все таки нет кора достаточно?

Evgeniy
19.10.2018
20:46:03
но у меня не стартует без установки дополнительного пакета в проект

TheRainwildsKeeper
19.10.2018
20:47:43

Evgeniy
19.10.2018
20:52:37
попробуй полный путь в vscode сначала указать для fsi

Ranorex
19.10.2018
21:07:08

Grigoriy
19.10.2018
21:20:57
May the f#rce be with you!

Darth
19.10.2018
21:21:52

Grigoriy
19.10.2018
21:22:38
А это ты в зелёненьком?

Google

Grigoriy
19.10.2018
21:22:54
72 из Спартанцев знаешь?

Darth
19.10.2018
21:23:25

Grigoriy
19.10.2018
21:24:22
Дарт Ведер в чорном должен быть :)

Darth
19.10.2018
21:27:04

Grigoriy
19.10.2018
21:28:02
С этим - в параллельный чатик

Darth
19.10.2018
21:28:55
:(

Roman
19.10.2018
23:36:09
Привет!

Sauron_AZM
19.10.2018
23:37:05
Ку-ку, котята

Grigoriy
19.10.2018
23:44:30

Dim
19.10.2018
23:45:22
С котятами в Scala понв
Или как это у них там называется

Grigoriy
20.10.2018
03:42:44
У них кошки. Котятки - kittens

Dim
20.10.2018
04:16:49
Ааа, точно, у них cats

Daniel
20.10.2018
08:16:20
kittens тоже есть)
Когда нужно скрестить cats и shapeless

Grigoriy
20.10.2018
12:47:24

Andrew
21.10.2018
11:46:36
Есть функция многих аргументов fn. Возможно ли написать общую ф-цию (не зависющую от количества аргументов fn), которая будет маппить результат fn?

Ayrat
21.10.2018
11:49:44

Vasily
21.10.2018
11:50:25

Google

Andrew
21.10.2018
11:50:55

Roman
21.10.2018
11:52:40

Ayrat
21.10.2018
11:52:52
да
Тогда нет. Шейплесс в скале умеет абстрагироваться от арности функций и типов вообще
Плебеи в фшарпе не могут

Andrew
21.10.2018
11:53:36
пичаль. в билдеры пока не погружался

Vasily
21.10.2018
11:57:00
Да там все просто
Пишешь билдер

Daniel
21.10.2018
11:57:18
Можно на основе билдера
Не очень представляю, как. Что конкретно имеется в виду под билдером? Computation expression builder как-то не вяжется с задачей

Vasily
21.10.2018
11:57:31
Который на вход принимает твою функцию
Плюс пустое значение объекта, которое надо получить
У билдера можно задать внутреннее состояние, к которому последовательно применять результаты custom operations
Ща

Friedrich
21.10.2018
11:59:51
да
То есть ты хочешь обобщённый вариант curry? Или что?

Vasily
21.10.2018
12:00:45
Короче, идея такая
У тебя есть функция вида 'a->'b
Где 'a это длинная цепочка параметров 'c->'d->'e
А 'b соответственно результат фукнции

Andrew
21.10.2018
12:03:26
То есть ты хочешь обобщённый вариант curry? Или что?
Например,
val fn1: 'a -> 'b -> 'c -> int
val fn2: 'd -> 'e -> int
val mapper: int -> float
Как сделать универсальную функцию, которой можно будет передать любую fn и mapper и получить функцию, которая принимает все аргументы fn и результат пропускает через mapper

Vasily
21.10.2018
12:03:31
Далее тебе надо написать несколько кастомных операций
На каждый тип аргумента

Google

Vasily
21.10.2018
12:06:25
type C<'b>(f:'a->'b) =
[<CustomOperation("apply")>]
member this.M(ctx,a)=ctx a
member this.Yield(())=f
Что-то похожее на это
И в билдере потом {apply 1} этц

Friedrich
21.10.2018
12:07:32
Наверняка на SRTP можно такой состряпать каким-нибудь наркоманским способом.

Vasily
21.10.2018
12:11:57

Friedrich
21.10.2018
12:12:48
Попробую пока состряпать на CRTP.
Хотя вряд ли получится, конечно.

Vasily
21.10.2018
12:14:09
let builder =Builder (f)
let res= builder{ apply 123
applyStr "124"
}

Friedrich
21.10.2018
12:14:30
Но это просто билдер для того, чтобы заврапать функцию.

Vasily
21.10.2018
12:14:44
Да
Но на компиляции будет ругаться, если ты чего забудешь

Friedrich
21.10.2018
12:15:49
Ок, это довольно симпатичная штука.

Vasily
21.10.2018
12:16:44
Там проблема, что под каждый аргумент, похоже, надо писать свою кастомную функцию. Но это не точно

Anna
21.10.2018
12:16:49
А если fn возвращает тоже функцию ? мы же не можем понять, докуда декаррировать

Vasily
21.10.2018
12:17:04
Можем
У нас в билдере надо явно задать

Anna
21.10.2018
12:17:26
ну если только явно это задать
универсально же никак

Google

Vasily
21.10.2018
12:17:43
Универсально тут не работает, к сожалению

Grigoriy
21.10.2018
12:18:38
а fn >> mapper не сработает?

Vasily
21.10.2018
12:20:13
Ну маппер не универсальный, поэтому будет цепочка

Friedrich
21.10.2018
12:32:07
Потому что у них у всех будет сигнатура 'a -> 'b, и задача тогда решится автоматически.

Andrew
21.10.2018
12:33:32
ну.. если рассматривать чатсную задачу, то проблем нет. могу конечно. Но не хочется копипастить и хочется универсализма.

Friedrich
21.10.2018
12:33:57
Даже если получится такое написать, оно мёртвых из могил поднимет.

Andrew
21.10.2018
12:34:34
по идее хорошоб иметь возможность в языке

Grigoriy
21.10.2018
12:34:39
Код надо писать понятный

Andrew
21.10.2018
12:37:36
тема понятности - отдельная. стремясь что-то упростить мы неизбежно усложняем что-то другое. Другими словами - делая более простой прикладную логику, усложняется ядро. Делая более простым язык программирования - усложняется компилятор/интерпретатор. Или же добавив такую функцию (»») мы упростим написание кода, но добавится сложная функция маппинга.
и вообще я бы предпочел иметь такую функцию маппинга в саммо языке F#. Тут выше говорили, что такая возможность есть в скала, кажется.

Vasily
21.10.2018
12:38:57
Короче , походу ,во флудилке пора заводить игру "норкоман дня"

Ayrat
21.10.2018
12:39:22
Не, тут без высоких абстракций не написать. А Дон против высоких абстракций!