Linker Unsafe
220 subscribers
182 photos
24 videos
18 files
859 links
Собираю ржавые и лямбдообразные новости, прикольные цитатки с форумов, ссылки на статьи и всё такое. В-общем, сюда я тащу такие крупицы, которые мне будет жаль потерять в цифровой бездне. Возможно, они покажутся интересными и вам.

Фи сюда: @nlinker
Download Telegram
https://t.iss.one/rust_offtopic/67685
Alex Zhukovsky:
вместо методов ToList/ToArray/ToHashSet/... можно было бы сделать один метод To<>

Но из-за того, что List/Array/HashSet/... сами по себе генерики ты не можешь, т.к. тебе надо сделать To<List<>>

а шарп так не разрешает


public static T<A> To<T>(this IEnumerable<A> xs)
where T : <>, new(), ICollection<>
{
var ta = new T<A>();
foreach(var x in xs) {
ta.Add(x);
}
return ta;
}

...
{
var data = Enumerable.Range(0, 20);

var set = data.To<HashSet<>>(); // sorcery!
var linkedList = data.To<LinkedList<>>();
var list = data.To<List<>>();
}

Коротко об "удобстве" сишарпа
Forwarded from Αλεχ Zhukovsky
1. Следствие того, что выражать мысли на ФП можно гораздо более точно. Это аргументация гошников, что им простыня на 100 строк кода иф-элсов понятнее, чем какие-нибудь более серьезные абстракции вроде макрософ и генериков. См статью про сравнение го и Д. То что в 1 стрчоку можно сделать то что на сишарпе делается в 50 - это хорошо, а не плохо.
2. Это сишный синтаксис инопланетный, просто ты к нему привык. Детям в 5 классе в штатах дают хачкель вместо плюсов и они прекрасно его пережеыввают. Потом не понимают что в сишной программе происходит
Forwarded from Jack
Forwarded from Oleg Andreev
Forwarded from Αλεχ Zhukovsky
interface (Applicative f, VerifiedFunctor f) => VerifiedApplicative (f : Type -> Type) where
applicativeMap : (x : f a) -> (g : a -> b) ->
map g x = pure g <*> x
applicativeIdentity : (x : f a) ->
pure Basics.id <*> x = x
applicativeComposition : (x : f a) -> (g1 : f (a -> b)) -> (g2 : f (b -> c)) ->
((pure (.) <*> g2) <*> g1) <*> x = g2 <*> (g1 <*> x)
applicativeHomomorphism : (x : a) -> (g : a -> b) ->
(<*>) {f} (pure g) (pure x) = pure {f} (g x)
applicativeInterchange : (x : a) -> (g : f (a -> b)) ->
g <*> pure x = pure (\g' : (a -> b) => g' x) <*> g
Forwarded from Αλεχ Zhukovsky
все еще читаемее раста
Forwarded from Vlad Beskrovnyi
Forwarded from Jack
Вон недавно багу нашли

static UNIT: &'static &'static () = &&();

fn foo<'a, 'b, T>(_: &'a &'b (), v: &'b T) -> &'a T { v }

fn bad<'a, T>(x: &'a T) -> &'static T {
let f: fn(&'static &'a (), &'a T) -> &'static T = foo;
f(UNIT, x)
}
Forwarded from Jack
Следовательно реализация раста в rustc неверна
Forwarded from Nikita Vilunov
Да я знаю об этой баге
Forwarded from Cyberdine Engineering🐤
Forwarded from koder
можно как-то заставить раст проаннотировать исходники выведенными типами? Или напечатать тип переменной? Вот это не помогает https://stackoverflow.com/questions/21747136/how-do-i-print-the-type-of-a-variable-in-rust