Как стать автором
Обновить
8
0
Ксения @pythonMyLife

Пользователь

Отправить сообщение

Замечательные типы - это хорошо, но и сама система типов языка должна предоставлять такую возможность - ADT, pattern matching, желательно HKT или хотя бы GAT's.

Я к тому, что dpy уже не будет обновляться, в нём поддержка слешей сторонними либами, а есть развивающиеся его форки, как, например nextcord

discord.py стал deprecated до их выпуска

Забавно. Я в свободное время доказал тьюинг-полноту типовой системы Rust'а реализовав выполнитель SmallF*ck -- облегчённого brainf*ck'а. Разглядел очень много похожих моментов в реализации на типах.

Про мою реализацию написал здесь, правда очень много общего

mapM_ print $ [2, 3, 5, 7, 11, 13, 17]

На хаскеле

К ассоциотивности: у $ ниже приоритет чем у ., по этому мы можем делать цепочки типа f . g h . q $ x поправьте, пожалуста

Рад, что помог с пониманием :)

Использование типовых переменных в определениях инстанса встречается очень часто, чтобы частично применить тип, к примеру кайнд Maybe это * -> *, а необходимый для определения Монады это * -> *, и они совпадают, по этому мы просто определяем инстанс как instance Monad Maybe, а кайнд State есть * -> * -> *, по этому для определения инстанса мы его частично применяем. Про кайнды много рассказать не могу, но мы могу сказать что конкретный тип имеет кайнд *, а контейнеры это как бы функции к типам и имеют тип * -> *. Если будут ещё вопросы, добро пожаловать в личку.

Я имею ввиду, что обьект с типом State Integer () будет являться (обёрнутой) ф-ей типа Integer -> ((), Integer), спасибо за вопрос, уточню в статье

Хорошо, спасибо, учту.

Хорошо, переформулирую

Это проект был создан а обучательных целях, конечно, его никто не будет использовать в реальных целях, в Хаскеле они просто не нужны.

Согласен с 1), но как разработчик в т. ч. на Python мне не столь критичны несколько лишних десятков миллисекунд, повторюсь этот проект в создан обучательных целях.

Со 2) думал, ничего лучше не придумал создавать тип как VarVal = IntVal Int | StrVal String ...

С 3) я разобрался используя типы Maybe, вот сигнатуры публичных get и del ф-ий


get :: Eq name => name -> VarState name val (Maybe val)
del :: Eq name => name -> VarState name val (Maybe ())
Ещё очень классная тема, это переопределение 'магических' методов.

Информация

В рейтинге
Не участвует
Зарегистрирована
Активность

Специализация

Специалист
От 3 ₽