109: (animated-1)
[personal profile] 109
вот замечательный пост. собственно, замечателен не сам пост, а комменты, половину которых занимает диалог страждущего [узнать, что такое монады] и enlightened one, пытающегося объяснить. замечателен тем, сколько усилий потрачено и с той, и с другой стороны. замечателен также и тем, что в процессе объяснения enlightened one даёт две формальные спецификации, а именно:

public interface Monad<F> {
<A,B,C> Func<A,F<C>> bind(Func<A,F<B> f1, Func<B,F<C>> f2);
}

и

interface Monad<A> {
Monad<A> point(A a);
Monad<B> bind(Func<A,Monad<B>>);
}

причём обе спецификации неверны, как семантически, так и синтаксически. правильная спецификация выглядит примерно так:

interface Monad<A> {
Monad<A> create(A a);
Monad<B> bind(Monad<A> ma, Func<A, Monad<B>> func);
}

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags