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);
}

(no subject)

Date: 2015-10-01 03:58 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
По первому определению - это оно какое-то неуклюжее, нужен тайпкласс, а не интерфейс, и тогда будет Клейсли.

Второе - стандарт.

Третье - с чего бы это Monad bind(Monad ma, Func
[Error: Irreparable invalid markup ('<a,>') in entry. Owner must fix manually. Raw contents below.]

По первому определению - это оно какое-то неуклюжее, нужен тайпкласс, а не интерфейс, и тогда будет Клейсли.

Второе - стандарт.

Третье - с чего бы это <code>Monad<B> bind(Monad<A> ma, Func<A, Monad<B>> func);</code>? Первый параметр уже даден, это <code>this</code>.

Ты, кстати, не путаешь тайпклассы и интерфейсы? Они похожи, но не идентичны.

(no subject)

Date: 2015-10-01 05:25 pm (UTC)
From: [identity profile] alexey-rom.livejournal.com
> Второе - стандарт.

Второе неверно, но из-за point, а не из-за bind.

(no subject)

Date: 2015-10-01 05:25 pm (UTC)
From: [identity profile] alexey-rom.livejournal.com
> Второе - стандарт.

Второе неверно, но из-за point, а не из-за bind. Там-то как раз аргумент this лишний получается.
Edited Date: 2015-10-01 05:28 pm (UTC)

(no subject)

Date: 2015-10-01 06:56 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
C# не умеет статические методы в интерфейсах, отсюда все беды.

(no subject)

Date: 2015-10-01 07:28 pm (UTC)
From: [identity profile] 109.livejournal.com
действительно.

(no subject)

Date: 2015-10-01 07:27 pm (UTC)
From: [identity profile] 109.livejournal.com
ах да, this же. ну болею я.

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