Cheese
судя по упоминанию decode, надо раскодировать, а не закодировать
Cheese
и decode — одно из правильных решений
Cheese
eitherDecodeStrict . encodeUtf8
типы не сходятся
Зигохистоморфный
cходяться
Зигохистоморфный
import Data.Aeson (ToJSON, FromJSON, decodeStrict, eitherDecodeStrict) import Data.Text.Encoding (encodeUtf8)
Cheese
import Data.Aeson (ToJSON, FromJSON, decodeStrict, eitherDecodeStrict) import Data.Text.Encoding (encodeUtf8)
• Couldn't match type ‘Data.ByteString.Lazy.Internal.ByteString’ with ‘Data.Text.Internal.Text’
Combot
Λ y (0) увеличил репутацию A64m qb0 (-1)
Cheese
там на входе Data.ByteString.Lazy.Internal.ByteString был
Зигохистоморфный
ну еще ByteString -> Text
Combot
combot.org/c/-1001043143583
Ilya
мне сейчас нужен только Semigroup
Можно просто туплом, воспользовавшись инстансом instance (Semigroup a, Semigroup b) => Semigroup (a, b)`
Ilya
Ну для Either инстанс Semigroup уже занят
Ilya
значит тебе всё равно что-то своё делать
Cheese
Ну для Either инстанс Semigroup уже занят
вот я и ищу другой. есть Validation (даже не один вариант), но он собирает только ошибки, а мне надо и хорошие результаты тоже
Ilya
так собирай туплом, потом вынешь что нужно
Cheese
значит тебе всё равно что-то своё делать
уже написал просто функцию
Ilya
left x = (x, mempty) right x = (mempty, x) "конструкторы"
Ilya
у тебя именно полугруппа?
Cheese
полурешётка, если интересно
Oleg
Интересен юзкейз не-Bounded полурешётки
Oleg
чем интересен?
Тем, что совершенно всё, что я встречал на практике всегда имело какой-то баунд. Типа там пустого сета/мэпа, минимального/максимальнрго элемента и т.п
Anonymous
Alexander будет жить. Поприветствуем!
Cheese
Интересен юзкейз не-Bounded полурешётки
или «юзкейс» — это практическое применение?
Cheese
нууу да
я применяю полурешётки в https://github.com/ff-notes/ff
Cheese
да
Oleg
Так они ж по определению должны быть Bounded
Oleg
Некий новый процесс должен стартовать с пустым состоянием
Cheese
во-первых, границы сверху и снизу совершенно независимые
Oleg
Сверху и снизу? Т.е. это решётка?
Cheese
полурешётка определяет отношение, у этого отношения можно найти грань с либой стороны
Cheese
Некий новый процесс должен стартовать с пустым состоянием
CRDT можно применять не только к состоянию процесса в целом, но к каждому объекту. процесс может стартовать без объектов, потом создавать новые, отправлять их и получать
Anonymous
@serg_bs будет жить. Поприветствуем!
Oleg
полурешётка определяет отношение, у этого отношения можно найти грань с либой стороны
Ну обычно-таки bound ом в полурешётке называют нейтральный элемент.
Oleg
CRDT можно применять не только к состоянию процесса в целом, но к каждому объекту. процесс может стартовать без объектов, потом создавать новые, отправлять их и получать
Ну тогда твоим общим CRDT будет какая-то разновидность Set. Но ок, от каждого элемента этого Set уже границ не требуется, логично
Cheese
Ну тогда твоим общим CRDT будет какая-то разновидность Set. Но ок, от каждого элемента этого Set уже границ не требуется, логично
не думаю, что имеет смысл какой-то «общий CRDT». вполне достаточно гранулярности по объектам
Cheese
впрочем, да, поскольку объекты с идентификаторами, то общее состояние описывается как Semilattice s => Map k s (псевдокод)
Anonymous
@kinul_kent_serotonin будет жить. Поприветствуем!
Alexander
я ненавижу стек
IC
я ненавижу стек
- Что вы делали? Запустил стек. - Какой результат ожидался? Испытаю прилив радости к любимому инструменту. - Что произошло вместо этого? ...
Alexander
я три часа убил на тупые его глюки при работе с никсом
Alexander
теперь мне придется скорее всего решать вопрос, как к черту заморозить старую версию, где хоть что-то работало
IC
Так может это ты никс ненавидишь?
Alexander
нет, стек
IC
):
Alexander
без стека все работает
Alexander
и в старой версии стека все работало
IC
без стека все работает
Но без никса тоже...
Alexander
ну не все, там был nix unrelated баг
Alexander
не факт, оно минимум не ругались на пакет которого не было ни в экстра депендах, ни в стакане
Alexander
со стекедж2никс чегото зависимости от разных версий либ, stack2nix пытается устанавливать ghc зачем-то
Alexander
блин quality software
Alexander
Проблема значительной части материалов по продвинутым фишкам Haskell в том, что она пишется математиками и для математиков. И вместо того, чтобы объяснять и показывать использование, в этих материалах предмет вводится аксиоматически, а потом обсуждаются его свойства. Ну вроде такого: "Такую-то вещь мы называем Type Family и записываем вот так: blah-blah И теперь мы получаем возможность записывать на уровне типов то-то и то-то, при этом мы должны следить, чтобы типы были такими-то и такими-то, потому что механизм вывода типов имеет недостатки" Это ничуть не лучше, чем вводить понятие монады через пресловутый моноид в категории эндофункторов, а потом обсуждать, какие же у монады должны быть законы. Меня совершенно не интересует математическая постановка проблемы и следствия из аксиоматически заданных конструкций. Я хочу видеть сначала практическую задачу, которую пытаются решить другим способом, и это получается не очень. Потом я хочу видеть объяснение, почему подфича Х-1 из набора большой фичи Х здесь может помочь лучше, чем что-то другое. Потом я хочу видеть конкретно этот пример, решенный с помощью подфичи Х-1, а не изучать аксиоматически введенный набор Х-1, Х-2, Х-3, потому что уже сказано, что Х-2 и Х-3 к задаче не имеют отношения. И уж тем более мне не интересно, что там у Х-1, Х-2 или Х-3 за математические следствия, распространяющиеся на дизайн языка. Конечно, математикам такая форма подачи привычна и удобна. Даем вводную и разворачиваем следствие. Но это не то, как пишется реальный софт и решаются реальные задачи. И это не то, как мыслят большинство программистов.
kosc
Проблема значительной части материалов по продвинутым фишкам Haskell в том, что она пишется математиками и для математиков. И вместо того, чтобы объяснять и показывать использование, в этих материалах предмет вводится аксиоматически, а потом обсуждаются его свойства. Ну вроде такого: "Такую-то вещь мы называем Type Family и записываем вот так: blah-blah И теперь мы получаем возможность записывать на уровне типов то-то и то-то, при этом мы должны следить, чтобы типы были такими-то и такими-то, потому что механизм вывода типов имеет недостатки" Это ничуть не лучше, чем вводить понятие монады через пресловутый моноид в категории эндофункторов, а потом обсуждать, какие же у монады должны быть законы. Меня совершенно не интересует математическая постановка проблемы и следствия из аксиоматически заданных конструкций. Я хочу видеть сначала практическую задачу, которую пытаются решить другим способом, и это получается не очень. Потом я хочу видеть объяснение, почему подфича Х-1 из набора большой фичи Х здесь может помочь лучше, чем что-то другое. Потом я хочу видеть конкретно этот пример, решенный с помощью подфичи Х-1, а не изучать аксиоматически введенный набор Х-1, Х-2, Х-3, потому что уже сказано, что Х-2 и Х-3 к задаче не имеют отношения. И уж тем более мне не интересно, что там у Х-1, Х-2 или Х-3 за математические следствия, распространяющиеся на дизайн языка. Конечно, математикам такая форма подачи привычна и удобна. Даем вводную и разворачиваем следствие. Но это не то, как пишется реальный софт и решаются реальные задачи. И это не то, как мыслят большинство программистов.
+
Combot
Hot Kosc (0) увеличил репутацию Александр Гранин (1)
kosc
Проблема значительной части материалов по продвинутым фишкам Haskell в том, что она пишется математиками и для математиков. И вместо того, чтобы объяснять и показывать использование, в этих материалах предмет вводится аксиоматически, а потом обсуждаются его свойства. Ну вроде такого: "Такую-то вещь мы называем Type Family и записываем вот так: blah-blah И теперь мы получаем возможность записывать на уровне типов то-то и то-то, при этом мы должны следить, чтобы типы были такими-то и такими-то, потому что механизм вывода типов имеет недостатки" Это ничуть не лучше, чем вводить понятие монады через пресловутый моноид в категории эндофункторов, а потом обсуждать, какие же у монады должны быть законы. Меня совершенно не интересует математическая постановка проблемы и следствия из аксиоматически заданных конструкций. Я хочу видеть сначала практическую задачу, которую пытаются решить другим способом, и это получается не очень. Потом я хочу видеть объяснение, почему подфича Х-1 из набора большой фичи Х здесь может помочь лучше, чем что-то другое. Потом я хочу видеть конкретно этот пример, решенный с помощью подфичи Х-1, а не изучать аксиоматически введенный набор Х-1, Х-2, Х-3, потому что уже сказано, что Х-2 и Х-3 к задаче не имеют отношения. И уж тем более мне не интересно, что там у Х-1, Х-2 или Х-3 за математические следствия, распространяющиеся на дизайн языка. Конечно, математикам такая форма подачи привычна и удобна. Даем вводную и разворачиваем следствие. Но это не то, как пишется реальный софт и решаются реальные задачи. И это не то, как мыслят большинство программистов.
+
Combot
Too fast! Try again later.
Алексей ayaye :)
И это не то, как мыслят большинство людей :) Я хоть математике и обучался, но такой подход не люблю )
kosc
Лютобешено короче.
Alexander
Зато такой подход и правда помогает авойдить саксесс эт эни кост.
Pavel
как и сообщение выше
Cheese
очевидно же, что человеку удобнее обучаться от частного к общему
Cheese
разве нет?
Cheese
а математические теории удобнее описывать в общем, потом доказывать для частных случаев, потому что если начать с частных, потом всё равно придётся доказывать и проходить по частным ещё раз. зачем бумагу переводить?
Cheese
короче, описания теорий хороши для описания теорий и плохи для обучения навыкам
Cheese
@bravit111, не так ли?
Алексей
Проблема значительной части материалов по продвинутым фишкам Haskell в том, что она пишется математиками и для математиков. И вместо того, чтобы объяснять и показывать использование, в этих материалах предмет вводится аксиоматически, а потом обсуждаются его свойства. Ну вроде такого: "Такую-то вещь мы называем Type Family и записываем вот так: blah-blah И теперь мы получаем возможность записывать на уровне типов то-то и то-то, при этом мы должны следить, чтобы типы были такими-то и такими-то, потому что механизм вывода типов имеет недостатки" Это ничуть не лучше, чем вводить понятие монады через пресловутый моноид в категории эндофункторов, а потом обсуждать, какие же у монады должны быть законы. Меня совершенно не интересует математическая постановка проблемы и следствия из аксиоматически заданных конструкций. Я хочу видеть сначала практическую задачу, которую пытаются решить другим способом, и это получается не очень. Потом я хочу видеть объяснение, почему подфича Х-1 из набора большой фичи Х здесь может помочь лучше, чем что-то другое. Потом я хочу видеть конкретно этот пример, решенный с помощью подфичи Х-1, а не изучать аксиоматически введенный набор Х-1, Х-2, Х-3, потому что уже сказано, что Х-2 и Х-3 к задаче не имеют отношения. И уж тем более мне не интересно, что там у Х-1, Х-2 или Х-3 за математические следствия, распространяющиеся на дизайн языка. Конечно, математикам такая форма подачи привычна и удобна. Даем вводную и разворачиваем следствие. Но это не то, как пишется реальный софт и решаются реальные задачи. И это не то, как мыслят большинство программистов.
+++++
Алексей ayaye :)
короче, описания теорий хороши для описания теорий и плохи для обучения навыкам
именно так. но традиция обучения математики этого не учитывает. хорошо, если преподаватель понимающий, тогда излагает по-другому
Oleg
Я, конечно, не бравит, но опыт показывает, что нужно и то и то
Cheese
ваши традиции неправильные. вот эти лучше
Oleg
Хорошо дать пример в начале как "интуицию"