
Vasiliy
06.02.2017
00:05:40
ну она выглядит как
export const normalize = pipe(
unwrapValues,
partition(has('remove')),
map(reduce(transform, {})),
zipObj(['remove', 'add']),
);
point-free т.е.
я вот так пока сделал: const result: MyResult = normalize(mydata); и там пипе(...) as any
т.е. дальше myResult будет MyResult, не смотря на то, фция any
если это в одном месте или так делать всегда в таких случаях, то мб ок

Дмитрий
06.02.2017
00:08:19
Ну наверное типа того
Просто иных вариантов особо нет)
Например, функция into, помимо всего прочего, может принимать {} в качестве аккумулятора, позволяя отправлять в него [ key, value ], на ходу превращая это в присвоение полей. Учитывая transduce и то, что таких фич у into ещё несколько, реально корректный тип у функции должен быть внушительным ?

Google

Vasiliy
06.02.2017
00:18:06
я прихожу к тому, что я хочу сейчас удалить @types/ramda
и написать у себя в vendors.d.ts что это все any XD

Дмитрий
06.02.2017
00:18:54
Ну почти))
@types/ramda таки пришлось положить в проект отдельно

Vasiliy
06.02.2017
00:20:05
потому что внутри у меня где-то path<string>, а где-то converge(...) as any, а снаружи вот та ф-ция, которая использует все вот эти другие маленькие ф-ции (где я типы подкостыливал), она as any и вот толку тогда от этого

Дмитрий
06.02.2017
00:21:05
Ну я короче так в ts и разочаровался ?
Но вообще язык просто не предназначен для таких абстракций, тут наверное только на хаскеле типизировать

Vasiliy
06.02.2017
00:22:56
да, понимаю
просто хочется мыслить так: так удобнее, лаконичнее, четче)
(поэтому посматриваю на purescript)

Дмитрий
06.02.2017
00:27:14
Я думаю всё же освоить нормально sanctuary и ramda-fantasy)

Vasiliy
06.02.2017
00:29:26
а, там в рантайме проверки https://github.com/sanctuary-js/sanctuary-def

Дмитрий
06.02.2017
00:30:33
Ага
Но вообще они отключаемы

Vasiliy
06.02.2017
00:31:56
спасибо, sanctuary интересно

Дмитрий
06.02.2017
00:32:41
Это один из активных контрибьюторов рамды, кстати

Google

Дмитрий
06.02.2017
00:33:28
Единственное что — для полного счастья надо форкнуть ramtuary repl)
http://davidchase.github.io/ramtuary/

Vasiliy
06.02.2017
00:34:21
а что с ним не так?)

Дмитрий
06.02.2017
00:35:03
Древний как mooTools ?

Vladimir
06.02.2017
00:50:41
Не удивительно, что не получается

Vasiliy
06.02.2017
00:51:24
ни в одном?

Vladimir
06.02.2017
00:51:48
Многие вещи - да

Дмитрий
06.02.2017
00:52:57
Всегда радует твоя категоричность

Vladimir
06.02.2017
00:53:21
Ну много таких примеров
Люди пытаются типизровать какой то паттерн, у них не получается и они говорят - все говно
А сами даже не могут объяснить, как это впринципе должно выглядеть и работать

Дмитрий
06.02.2017
00:55:10
У меня даже конкретный список есть, если что
Отучаемся говорить за всех

Vladimir
06.02.2017
00:55:31
Список чего?
Давай, интересно

Дмитрий
06.02.2017
00:56:44
Характеристик типизируемого языка

Vasiliy
06.02.2017
00:57:31
надо просто >>>, для конкретно моего случая

Дмитрий
06.02.2017
00:58:04
Для пайпа например нужны variadic kinds

Vladimir
06.02.2017
00:58:25
Ну вот вопрос сразу - они вообще где то есть?

Google

Vladimir
06.02.2017
00:58:36
И как должна выглядеть сигнатура?

Vasiliy
06.02.2017
00:58:40
ну в хаскеле же есть стрелки
(>>>) :: Category cat => cat a b -> cat b c -> cat a c

Vladimir
06.02.2017
00:59:14
ну это и так можно сделать на функциях
некрасиво только
Именно что отсутствует variadic что либо

Дмитрий
06.02.2017
01:01:23
<... V>

Vasiliy
06.02.2017
01:01:33
https://github.com/Microsoft/TypeScript/issues/5453

Vladimir
06.02.2017
01:01:37
это ясно, а дальше?
это кстати формально не нужно - можно просто параметризовать таплами
ну чтобы что то осмысленное сделать нужная хуева туча операторов на типах

Дмитрий
06.02.2017
01:03:44
Ну вот опять схлопнулись с "невозможно" до "не нужно"

Vladimir
06.02.2017
01:04:22
Нет такого

Дмитрий
06.02.2017
01:04:33
Mapped types ввели, много хучей операторов добавилось?

Vladimir
06.02.2017
01:04:50
Этого не достаточно

Дмитрий
06.02.2017
01:05:05
Это не ответ на вопрос

Vladimir
06.02.2017
01:05:20
Какое вопрос?
Эти вещи не связаны
Конкретно pipe как типизировать?
Как это может выглядеть?

Дмитрий
06.02.2017
01:07:50
Ты издеваешься?

Google

Vladimir
06.02.2017
01:07:59
Я задаю вопрос
У тебя как я понял есть ответ

Vasiliy
06.02.2017
01:16:11
ну как вот sandersn там в том пропозале описывает) как-то аналогично curry, наверное
как именно это реализовать фиг знает, я даже пропозал этот только вот щас читать стал, понятия не имею как это работает все, для меня это магия)

Vladimir
06.02.2017
01:18:45
ну curry это простой пример

Vasiliy
06.02.2017
01:19:10
pipe<Vs, T0, V, T>(f0: (...xs: ...Vs) => T0, ...fns: ...(x: V) => T): (...xs: Vs) =>

Vladimir
06.02.2017
01:20:21
не, это чет не то
ведь все функции попарно должны соответствовать
Вот во Flow такое предложили
declare function compose<T>(...args: T): $Reduce<T, ((a: MID) => OUT, (a: IN) => MID) => (a: IN) => OUT>;
Соответственно, нужен $Reduce

Admin
ERROR: S client not available

Vladimir
06.02.2017
01:21:57
Потом нужно будет что-то еще
И т д

Vasiliy
06.02.2017
01:22:10
вот тут чел размышляет тоже про это https://github.com/Microsoft/TypeScript/issues/12512
у него _RDC ~ $Reduce я так понял

Vladimir
06.02.2017
01:22:41
Вопрос - какой минимальный набор операторов нужен, чтобы можно было сделать все, что угодно
ну у него как то совсем странно

Mike
06.02.2017
01:26:57
в перле например можно дописать по сути экстеншн к парсеру и потом к optree. Хочешь - дописывай. Во многом приводит к бардаку. Хотя классные вещи бывают

Vasiliy
06.02.2017
01:33:14
да, нашел вот это у вас https://github.com/facebook/flow/issues/1251#issuecomment-244284732

Vladimir
06.02.2017
01:33:42
Вот это пример того чего нигде нет

Google

Vasiliy
06.02.2017
01:33:52
да я понял) а вот это работает declare function all<T>(arr: T): Promise<$TupleMap<T, <T>(t: Promise<T>) => T>>; ?

Vladimir
06.02.2017
01:34:01
Да

Vasiliy
06.02.2017
01:34:09
а что за $TupleMap?) ну т.е. я понял но не совсем)

Vladimir
06.02.2017
01:34:45
Короче это как мэп, но для типов
Например
$TupleMap<[number, string], () => number>
будет [number, number]
Можно во что нибудь завернуть
$TupleMap<[number, string], <T>(T) => Promise<T>>
Будет [Promise<number>, Promise<string>]
Можно развернуть
И т д

Vasiliy
06.02.2017
01:37:02
понял

Vladimir
06.02.2017
01:37:27
Есть $ObjMap - это то же самое что mapped types в ТС

Vasiliy
06.02.2017
01:41:39
ладно, спасибо, вроде понял) это все интересно, но мне нужно еще успеть написать много as any сегодня)

Максим
06.02.2017
05:56:57

Anatoly
06.02.2017
08:16:40
https://github.com/s-panferov/awesome-typescript-loader/releases
awesome-typescript-loader релизнулся. Никто не смотрел как там по скорости у пацанов? Я ставил rc, первая сборка - быстрее чем у ts-loader, но горячие пересборки - это какой-то ужас.

Yuri
06.02.2017
10:32:49
как соотносятся TypeScript и 'use strict'? Всегда ли TS-код является strict?
вообще сложновато представить даже просто ES6 без strict, если честно

Anatoly
06.02.2017
11:16:45
Если ты правильно пишешь код, то про 'use strict' можно вообще не думать.

Aleh
06.02.2017
11:22:47
Что-то типа <T: any []>

Vladimir
06.02.2017
11:24:49
Ну это не обязательно