Size: a a a

2021 January 19

H

Hirrolot in rust_offtopic
а, жс
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вижу можно было не тратить время на описание проблемы)
источник

p

polunin.ai in rust_offtopic
Αλεχ Zhukovsky
@hirrolot сигнатура мапа в жсе примерно такая:

map : (a -> b) -> Promise a ->
 (
  match IsPromise b
   case Promise x => Promise x
   case NotPromise => Promise b
 )
Лучше чем в расте
источник

p

polunin.ai in rust_offtopic
Где манат нету
источник

H

Hirrolot in rust_offtopic
манады для магнатов
источник

p

polunin.ai in rust_offtopic
Αλεχ Zhukovsky
@hirrolot сигнатура мапа в жсе примерно такая:

map : (a -> b) -> Promise a ->
 (
  match IsPromise b
   case Promise x => Promise x
   case NotPromise => Promise b
 )
кстати вот и завтипы
источник

H

Hirrolot in rust_offtopic
polunin.ai
кстати вот и завтипы
этот пример наоборот демонстрирует ненужность завтипов перед динамической типизацией
источник

H

Hirrolot in rust_offtopic
динамическая типизация даёт сразу ВСЁ, а стат. системы типов лишь малую часть
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
динамическая типизация тут не при чем
источник

p

polunin.ai in rust_offtopic
о да
источник

p

polunin.ai in rust_offtopic
крейт на 900 строчек без завсисимостей
источник

p

polunin.ai in rust_offtopic
ммммм
источник

p

polunin.ai in rust_offtopic
(инкременталка)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
в терминах шарпа

async Task<object> Map(Task<T> task, Func<T, TResult> func) {
 var result = func(await task);
 var resultType = typeof(TResult);
 if (resultType.IsGenericType && resultType.GetGenericDefinition() == typeof(Task<>) {
   return await GetAwaiter(result)
 }
 return result;
}
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
о да
поэтому я юзаю карго чек
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
public static class JsHelper
{
   public static async Task<object> Map<T>(this Task<T> task, Func<T, object> func)
   {
       var result = func(await task);
       if (result is Task t)
       {
           await t;
           var taskType = t.GetType();
           if (taskType.IsGenericType)
           {
               return taskType.GetProperty(nameof(Task<object>.Result)).GetValue(t);
           }
           return null;
       }
       return result;
   }
}

async Task Main()
{
   (await Task.FromResult(10).Map(t => t * 2)).Dump();
   (await Task.FromResult(10).Map(t => Task.Delay(2000).ContinueWith(_ => t * 2))).Dump();
}
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
источник

p

polunin.ai in rust_offtopic
?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
да в очередной раз угораю с жса
источник