@frp_ru

Страница 202 из 420
Alex
02.10.2017
10:30:00
спасибо

Kelin
02.10.2017
12:16:34
А это разве быстро?

Павел
02.10.2017
12:48:47
В хаскеле - да

Denis
02.10.2017
12:50:04
в лени да

Google
Дмитрий
02.10.2017
12:53:06
На оба поста ответ нет

По крайней мере автор не справился

Но естественно это не значит что это невозможно, просто как факт — текущая имплементация — не быстрая

Насколько можно об этом говорить в хаскеле

illiatshurotshka❄️
02.10.2017
12:55:35
хммм

а какое применение?

kana
02.10.2017
12:56:55
@ZeroBias как делать полиморфные константы?

const nil: List<T> = new Nil<T>(); типа такого

andretshurotshka?❄️кде
02.10.2017
12:57:25
?????

Дмитрий
02.10.2017
12:58:00
В плане, как? ? Не оч понял

andretshurotshka?❄️кде
02.10.2017
12:58:05
Дмитрий
02.10.2017
12:58:05
Я через интерфейс определял

Google
kana
02.10.2017
12:58:47
не в этом дело, нужно, чтобы одна и та же переменная nil имена разный тип в зависимости от использования

cons(1, nil) // nil: Nil<number> cons("q", nil) // nil: Nil<string>

Дмитрий
02.10.2017
12:59:26
Аа, ну тут уже сложнее Но вообще это контрвариант

andretshurotshka?❄️кде
02.10.2017
12:59:34
тайпкласс ?)

Дмитрий
02.10.2017
12:59:37
Не

andretshurotshka?❄️кде
02.10.2017
12:59:40
ааа

Дмитрий
02.10.2017
12:59:54
Сложнее в том плане что вчерашний код по ряду причин не оч к этому готов

Но вообще class Nil<-T>{ }

kana
02.10.2017
13:00:20
const nil = new Nil(); const cons = <T>(head: T, tail: List<T>): Cons<T> => new Cons(head, tail); все немного изменилось

Дмитрий
02.10.2017
13:00:44
Минус — контрвариант, то есть тип, определяемый только на запись (что нам и нужно)

При этом лучше не экономить и каждый Nil создавать через new по месту использования

Дмитрий
02.10.2017
13:04:04
+ - ковариант
А я про контрварианты)

Denis
02.10.2017
13:04:25
в скале весело с +/- играться)

Дмитрий
02.10.2017
13:04:44
Да, в флоу так же можно угорать, вовсю используютс

分解物質
02.10.2017
13:05:14
А это разве быстро?
не быстро не просто не понятно —- три кита функционального программирования

Дмитрий
02.10.2017
13:05:23
У меня типизация многих либ, и чужих и своих основана именно на этих ограниченниях

分解物質
02.10.2017
13:09:08
мемы
я старался

Google
Kelin
02.10.2017
13:09:22
Че вы тут мутите вообще

С нилами

С консами

Denis
02.10.2017
13:09:51
Дмитрий
02.10.2017
13:10:01
Если мутишь — мути тихо

Kelin
02.10.2017
13:10:12
Если мутишь — мути тихо
Но вы мутите громко

andretshurotshka?❄️кде
02.10.2017
13:10:14
он тардис для списков пилит

на жс

Kelin
02.10.2017
13:10:36
Ясно

Дмитрий
02.10.2017
13:10:55
Но вы мутите громко
Если номер не знаком — не поднимай трубку

Denis
02.10.2017
13:10:55
тардис основан на RState

kana
02.10.2017
13:11:05
короч, есть класс List, у него два ребенка - Nil и Cons. Я сделал if (x instanceof Nil) return. Может ли flow понять, что после этого ифа у нас однозначно Cons?

Дмитрий
02.10.2017
13:11:13
Да

Если это не противоречит твоему типу

kana
02.10.2017
13:12:01
const toArray = <T>(arr: List<T>): T[] => { if (arr instanceof Nil) { return []; } return [ $(arr.head), ...toArray(arr.tail) ]; }

Дмитрий
02.10.2017
13:12:08
Я например сначала объявил, что функция принимает List а потом сделал type inference для Nil И флооу такой — ЭЭэ

kana
02.10.2017
13:12:14
property 'head'. Property not found in List

Дмитрий
02.10.2017
13:12:47
Ну вот да, про это противоречие я и написал, у тебя должен быть либо интерфейс какой-то, либо ещё что

Нельзя вывести тип который противоречит декларации По которой в List есть head

kana
02.10.2017
13:13:11
Cons<T> | Nil<T> сойдет?)

Google
Дмитрий
02.10.2017
13:13:32
Я поэтому и сказал, что код не готов, довольно нетривиальный перечень проблем появляется)

Либо прямо в параметре, либо через дженерик <T, L: Cons<T> | Nil<T>>

kana
02.10.2017
13:27:34
ну вот https://gist.github.com/kana-sama/d4520b97b7b64ea0e5f95b6bb3df43e8

убрал всю ненужную лень для перформанса

и типы добавил

мне вообще дико не нравится писать типы прямо в коде, вместо того, чтобы описать их повыше

Дмитрий
02.10.2017
13:29:31
Я их пишу обычно в другом файле

index.h.js

У всех обмбит с этого, но мне нрм))

https://github.com/zerobias/telegram-mtproto/blob/feature/mtproto3/packages/telegram-mtproto/src/state/index.h.js Типа вот так

Удобно, без циклических зависимостей, ну и так далее

kana
02.10.2017
13:32:07
annot x : number; const x = 1; Синтаксис говно такой, но идея понятна

andretshurotshka?❄️кде
02.10.2017
13:34:52
type meme = (a: { is: 'Meme' }) => { _: 'ok' } const meme: meme = (a) => { return { _: 'ok' } } meme(1)

только так)

Дмитрий
02.10.2017
13:35:21
В флоу нельзя тип и переменную с одним именем

kana
02.10.2017
13:35:42
говно

andretshurotshka?❄️кде
02.10.2017
13:35:59
только оно не работает все равно

Дмитрий
02.10.2017
13:36:16
Ну в контексте жс это хорошо, иначе поехать можно

Google
andretshurotshka?❄️кде
02.10.2017
13:36:23
говно
еее зигоморфизм

Дмитрий
02.10.2017
13:36:30
\0 \0

kana
02.10.2017
13:36:33
ахахахахх

Дмитрий
02.10.2017
13:37:38
annot x : number; const x = 1; Синтаксис говно такой, но идея понятна
Кстати в большинстве случаев это вообще излишне

kana
02.10.2017
13:37:53
для функций мне бы это

Дмитрий
02.10.2017
13:38:09
Нужно пояснять только дженерики и прочие затруднительные места, остальное должно выводиться самостоятельно

andretshurotshka?❄️кде
02.10.2017
13:39:28
в тс так можно function meme(a: string): void function meme(a) { }

в флоу не уверен

kana
02.10.2017
13:56:22
ну вот небольшой бенчмарк



lazy: 995.10693359375ms strict: 157.68798828125ms

разница невелика, можно пользоваться)

вообще сложно сравнить с учетом того, что во втором случае предполагается ленивая работа с массивом, а в первом энергичная

adam
02.10.2017
15:16:31
Без понятия, взято отсюда: http://lambdasoft.ru/posts/2016-03-05--tardis.html
Автор буквально выебнулся базовыми знаниями СТО и ОТО а также стандартной модели даже не приводя никакой корреляции с темой, лол. Неужели у тардиса действительно есть какой-то практичный юзкейс?



Дмитрий
02.10.2017
15:19:54
Я про этот коммент выше писал

adam
02.10.2017
15:20:49
жаль, что я не умею читать

Дмитрий
02.10.2017
15:21:33
Ну сильно выше) Про то что автор не вывез оптимизацию

Страница 202 из 420