169 похожих чатов

Я бы еще хотел уточнить один момент по статье о

fundeps/multiparamtypeclasses
Там есть попытка сделать класс MonadReader для типов с каиндом Type -> Type -> Type

Выглядеть этот класс будет вот так:
class MonadReader m where
ask :: m r r
local :: (r -> r) -> m r a -> m r a
reader :: (r -> a) -> m r a
Помимо того что мы не можем для такого класса написать инстанс для типа с каиндом Type -> Type
какие еще в этом есть недостатки?

В теории мы ведь можем тип ReaderT переписать вот так
newtype ReaderT m r a = ReaderT { runReaderT :: r -> m a } (переставить переменные типа местами, что бы m был на первом месте)
и успешно написать для такого класса инстанс

Так же инстанс можно сделать для типа newtype Reader r a = Reader { runReader :: r -> a }
Да и в целом я посмотрел инстансы для этого класса вот тут https://hackage.haskell.org/package/mtl-2.2.2/docs/src/Control.Monad.Reader.Class.html#MonadReader
и выглядит так, как будто любой тип в теории можно немного подправить (поменять переменные типа местами) и реализовать инстанс для MonadReader m

Вот тут я сделал реализацию для 2ух типов и в базовом варианте вроде даже все работет - https://replit.com/@GracefulPotato/BrownJoyfulModes#main.hs
Хотелось бы понять почему именно это идея бредовая и какие проблемы из-за этого могут быть.

4 ответов

9 просмотров

не бредовая, есть разные альтернативные подходы, например, https://hackage.haskell.org/package/ether

Иван- Автор вопроса

но в целом изменение порядка переменных типов может ведь очень сильно все поломать?

Иван
но в целом изменение порядка переменных типов може...

если на вашу библиотеку все завязаны, то да. а если вы новую библиотеку пишете, то ничего не поломаете

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Карта сайта