Size: a a a

(F|R|FR)P - русскоговорящее сообщество

2018 November 07

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Ну, я могу только на жс/флоу ответить:
ну, я на жс не могу такое сделать. хотя жс знаю больше чем хаскель
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Ну, я могу только на жс/флоу ответить:
А покажи как майби заменяет тебе ифы. На жс
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
class MaybeJust<+T> implements Maybe<T> {
 tap(call: T => any): Maybe<T> {
   call(getValue(this));
   return this;
 }
 ...
}

class MaybeNothing<+T> implements Maybe<T> {
 tap() {
   return nothing;
 }
 ...
}

maybe.tap(v => console.log(`this is Just(${v})`));

class EitherRight<+L, +R> implements Either<L, R> {
 tapR(call: R => any): Either<L, R> {
   call(getRight(this));
   return this;
 }

 tapL(): Either<L, R> {
   return this;
 }
}

class EitherLeft<+L, +R> implements Either<L, R> {
 tapR(): Either<L, R> {
   return this;
 }

 tapL(call: L => any): Either<L, R> {
   call(getLeft(this));
   return this;
 }
}

either
 .tapR(v => console.log(`this is Right(${v})`))
 .tapL(v => console.log(`this is Left(${v})`));
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
class MaybeJust<+T> implements Maybe<T> {
 tap(call: T => any): Maybe<T> {
   call(getValue(this));
   return this;
 }
 ...
}

class MaybeNothing<+T> implements Maybe<T> {
 tap() {
   return nothing;
 }
 ...
}

maybe.tap(v => console.log(`this is Just(${v})`));

class EitherRight<+L, +R> implements Either<L, R> {
 tapR(call: R => any): Either<L, R> {
   call(getRight(this));
   return this;
 }

 tapL(): Either<L, R> {
   return this;
 }
}

class EitherLeft<+L, +R> implements Either<L, R> {
 tapR(): Either<L, R> {
   return this;
 }

 tapL(call: L => any): Either<L, R> {
   call(getLeft(this));
   return this;
 }
}

either
 .tapR(v => console.log(`this is Right(${v})`))
 .tapL(v => console.log(`this is Left(${v})`));
это как-то посложнее хаскеля
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
это как-то посложнее хаскеля
🤷‍♂️
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Сложно, но можно. Никто и не говорил, что это легко. Но за труды я себя поблагодарил.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Хотя не только себя.
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
ладно. вбщем в хаскеле есть тип майби, ф-ция майби, и в классе монад еще бинд для типа прописан. И все три легче читаются чем вот это одно у тебя на жс
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
ладно. вбщем в хаскеле есть тип майби, ф-ция майби, и в классе монад еще бинд для типа прописан. И все три легче читаются чем вот это одно у тебя на жс
Ну... Я могу только поздравить чуваков, которые пишут на Хаскеле. =)
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
class MaybeJust<+T> implements Maybe<T> {
 tap(call: T => any): Maybe<T> {
   call(getValue(this));
   return this;
 }
 ...
}

class MaybeNothing<+T> implements Maybe<T> {
 tap() {
   return nothing;
 }
 ...
}

maybe.tap(v => console.log(`this is Just(${v})`));

class EitherRight<+L, +R> implements Either<L, R> {
 tapR(call: R => any): Either<L, R> {
   call(getRight(this));
   return this;
 }

 tapL(): Either<L, R> {
   return this;
 }
}

class EitherLeft<+L, +R> implements Either<L, R> {
 tapR(): Either<L, R> {
   return this;
 }

 tapL(call: L => any): Either<L, R> {
   call(getLeft(this));
   return this;
 }
}

either
 .tapR(v => console.log(`this is Right(${v})`))
 .tapL(v => console.log(`this is Left(${v})`));
вот кстати.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
вот кстати.
Ну, мне больше интересно не как это создаётся, а как используется.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
На жс чтобы написать что-то удобное, нужно сделать много неудобного. Но профит есть, если ты не можешь соскочить с жс.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Поэтому если я написал удобную мейби, мне не жалко потраченного времени. Без фанатизма, конечно. Но это же мне упростит жизнь.
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Ну, мне больше интересно не как это создаётся, а как используется.
вот так
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
вот так
Да, это правда сложно для понимания. =)
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
вот так
Там можно как-нибудь так?

either
 .mapR(v => 'this is Right ' + v)
 .mapL(v => 'this is Left ' + v)
 .tapR(console.log)
 .tapL(console.log);
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Да, это правда сложно для понимания. =)
Проще чем на жс, тут можно создавать свои операторы, операторы это обычные функции двух аргументов, слева Just 5, это как в жс new Just(5), а справа лямбда, как в жс x => new Just(x*2)
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
GG
Проще чем на жс, тут можно создавать свои операторы, операторы это обычные функции двух аргументов, слева Just 5, это как в жс new Just(5), а справа лямбда, как в жс x => new Just(x*2)
И те же map, ap, chain — это тоже операторы? Или я путаю?
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
И те же map, ap, chain — это тоже операторы? Или я путаю?
map не как оператор сделан.
я не изучал извращенное фп на жс, но подозреваю что
chain это оператор >>
источник

G

GG in (F|R|FR)P - русскоговорящее сообщество
bind это >>=
источник