Size: a a a

2020 March 26

VS

Vladimir Shchur in pro.net
Ayrat Hudaygulov
А зачем нужны хкт можно понять если посмотреть исходники System.Linq
а Linq же писались под присмотром хаскеллиста, он видимо ничего не смог придумать для CLR
источник

IB

Ivan Balanar in pro.net
Vladimir Shchur
кстати, подумал что не обязательно запрещать, просто тип результата не известен, например ничто не мешает такую функцию написать
? (List<?> l) => l[0]
а что делать в рантайме?
источник

VS

Vladimir Shchur in pro.net
Ivan Balanar
а что делать в рантайме?
в рантайме у тебя тип известен будет
источник

IB

Ivan Balanar in pro.net
Vladimir Shchur
в рантайме у тебя тип известен будет
т.е. индекс 0 у нас константа костыльная.
источник

VS

Vladimir Shchur in pro.net
что?) это пример я привел функции First которая берет первый элемент HKT листа
источник

IB

Ivan Balanar in pro.net
Vladimir Shchur
что?) это пример я привел функции First которая берет первый элемент HKT листа
да, понял. а как потом работать с этим List<?>
источник

AH

Ayrat Hudaygulov in pro.net
Ivan Balanar
да, понял. а как потом работать с этим List<?>
Это будет тип высшего порядка, как функция
источник

R

RA-TA-TATA in pro.net
Вопрос на 1 хривну. Стоит ли все Task заменить на ValueTask?
источник

AH

Ayrat Hudaygulov in pro.net
RA-TA-TATA
Вопрос на 1 хривну. Стоит ли все Task заменить на ValueTask?
НЕТ
источник

R

RA-TA-TATA in pro.net
почему?
источник

VS

Vladimir Shchur in pro.net
Ivan Balanar
да, понял. а как потом работать с этим List<?>
использовать везде где не нужно знать тип содержимого
источник

R

RA-TA-TATA in pro.net
вроде почитал про ValueTask - всем лучше чем таска,
1) таску в себе держит
2) конвертится в таску
3) память экономится
источник

R

RA-TA-TATA in pro.net
Что еще надо?)
источник

DP

Denis Petukhov in pro.net
RA-TA-TATA
вроде почитал про ValueTask - всем лучше чем таска,
1) таску в себе держит
2) конвертится в таску
3) память экономится
Пункт 1 и 3 както не очень совместимы
источник

DP

Denis Petukhov in pro.net
Т.е. ты и так аллоцировал таск, потом еще на ValueTask потратил памяти. Память экономится?)
источник

AH

Ayrat Hudaygulov in pro.net
Ivan Balanar
да, понял. а как потом работать с этим List<?>
Тип обычный это:
string
int
Guid

Дженерик тип (высший тип 1 порядка)
T -> string
T -> int
...

то есть у тебя есть некий тайп конструктор, она же функция. Ты должен подать конкретный (1) тип чтобы получить этот тип

тип высшего порядка (2 и более):

T -> G -> string
T -> G -> int
...

это когда ты подаёшь тип (например первый T), а возвращается привычный дженерик, когда можно ещё подать тип!
то есть это как с функциями высших порядков (функции умеют возвращать функции),
А типы высшего порядка это когда типы умеют возвращать другие типы или их конструкторы
источник

AH

Ayrat Hudaygulov in pro.net
RA-TA-TATA
вроде почитал про ValueTask - всем лучше чем таска,
1) таску в себе держит
2) конвертится в таску
3) память экономится
это структура
источник

R

RA-TA-TATA in pro.net
Denis Petukhov
Т.е. ты и так аллоцировал таск, потом еще на ValueTask потратил памяти. Память экономится?)
ну да
источник

R

RA-TA-TATA in pro.net
так почему не стоит заменять?
источник

AH

Ayrat Hudaygulov in pro.net
RA-TA-TATA
так почему не стоит заменять?
потому что ты можешь утонуть в копированиях и боксированиях
источник