Size: a a a

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

2019 January 07

S

Sublime Bot in (F|R|FR)P - русскоговорящее сообщество
Инициирую поиск пидора дня...
источник

S

Sublime Bot in (F|R|FR)P - русскоговорящее сообщество
Где-же он...
источник

S

Sublime Bot in (F|R|FR)P - русскоговорящее сообщество
Я в опасности, системы повреждены!
источник

S

Sublime Bot in (F|R|FR)P - русскоговорящее сообщество
Кажется, пидор дня - @wefkwefo
источник

И

Илья in (F|R|FR)P - русскоговорящее сообщество
источник

MS

Max Shammasov in (F|R|FR)P - русскоговорящее сообщество
Давненько меня не номинировали
источник

MS

Max Shammasov in (F|R|FR)P - русскоговорящее сообщество
третье место всего - не порядок !
источник
2019 January 09

Вл

В ладу in (F|R|FR)P - русскоговорящее сообщество
ilja 🎄 пойдёшь на фбай?
источник

I

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

Вл

В ладу in (F|R|FR)P - русскоговорящее сообщество
эх(
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
mg901
Значит я неправильно выразился. При помощи какого метода я могу извлечь текст ошибки из монады Either?
Текст ошибки или значение Left?
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Текст ошибки или значение Left?
текст ошибки
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
в sanctuary это можно сделать вот так
S.either (S.toUpper) (S.show) (S.Left ('Cannot divide by zero'))
"CANNOT DIVIDE BY ZERO"

S.either (S.toUpper) (S.show) (S.Right (42))
"42”
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
mg901
текст ошибки
Там нет никакой ошибки. Есть значение Left, которое условно считается ошибкой, но при этом инстансом Error быть не обязано, равно как не обязано реализовывать ни один из интерфейсов. Соответственно, это значение не обязано содержать какой-либо текст. Ты можешь получить это значение с помощью метода fold:

const leftOrUndefinedValue = myEither.fold(
 left => left,
 right => undefined,
)

При таком раскладе у тебя будет либо значение Left, либо undefined. Так же есть метод reduceL:

const leftOrUndefinedValue = myEither.reduceL(
 (or, left) => left,
 undefined, // Можно не передавать
)

Чем бы ты ни пользовался (даже если бы я оставил снаружи свойство left, по которому можно было бы получить ошибку напрямую снаружи) ты можешь вытащить из этой монады значение, которое может быть как ожидаемым тобою значением, так и undefined. Но если тебе на самом деле не нужно ничего никуда вытаскивать, а нужно просто воспользоваться значением (скорей всего, так и есть), то есть методы tap (или tapR) и tapL. В данном случае тебе нужен tapL:

myEither.tapL(
 left => console.log(left),
)

Если myEither — это Right, то tapL просто не будет ничего делать.
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
@bigslycat с первого раза не очень понял, но я перечитаю ещё раз. Спасибо тебе большое за подробное объяснение.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
mg901
@bigslycat с первого раза не очень понял, но я перечитаю ещё раз. Спасибо тебе большое за подробное объяснение.
function toEither(value) {
 return value instanceof Error ?
   Left(value) : Right(value);
}

Результатом выполнения этой функции у тебя будет Either. Left — это Either, и Right — это Either.

Если ты получишь Right, то значение Left у тебя просто не будет существовать.

Если ты получишь Left, то не будет существовать значение Right.

Предполагается, что имея на руках Either, ты не знаешь, Left это или Right. Соответственно, если ты захочешь вытащить значения Left или Right наружу, то они оба могут быть равны undefined. Ну и монады создаются не за тем, чтобы потом выковыривать из них значения, а вот зачем:

myEither
 .tapR(
   right => console.log(`This is Right(${right})`),
 )
 .tapL(
   left => console.log(`This is Left(${left})`),
 )
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
mg901
@bigslycat с первого раза не очень понял, но я перечитаю ещё раз. Спасибо тебе большое за подробное объяснение.
Если myEither — это Left, то выполнится
left => console.log(`This is Left(${left})`)

Если myEither — это Right, то выполнится
right => console.log(`This is Right(${right})`)
источник

AK

Anton Kotenko in (F|R|FR)P - русскоговорящее сообщество
В ладу
ilja 🎄 пойдёшь на фбай?
Я поеду)
источник

Вл

В ладу in (F|R|FR)P - русскоговорящее сообщество
Хорошо
источник

Вл

В ладу in (F|R|FR)P - русскоговорящее сообщество
Я тебя услышал
источник