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
Admin
Friedrich
21.10.2018
12:07:59
Наверняка на 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
Anna
21.10.2018
12:17:32
универсально же никак
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
Не, тут без высоких абстракций не написать. А Дон против высоких абстракций!