Leonid 🦇
Ну какой из него Алег...
кана
выглядит как текстовая игра
Alexander
Или ты про Amoeba?
кана
ZorkLike
кана
меня конечно удивило сходу ручные инстансы функтора и конструкторов фри команд
Alexander
В свое время я делал такие вещи: "Движок" текстовых игр Adv2Game и цикл "Haskell Quest Tutorial", 5 статей. Ни игры, ни "движка" не сделал. Уровень - beginner "The Amoeba World" (стратегическая игрушка, изначально запланированная для Ludum Dare) и цикл "Дизайн и архитектура в ФП", 3 статьи. Ни игры, ни движка не сделал. "Andromeda" (SCADA-like проект) и книга "Functional Design Architecture". Ни проект, ни книгу до конца не довел. И вот теперь "hinteractive" и какие-нибудь материалы по ходу дела. Уже сделал доклад на fprogspb в апреле, и вот тот каст, что вверху.
Alexander
blah в соседнем чятике
Alexander
blah в соседнем чятике
Каком? Где? Завели чатик под флуд? И к кому обращено? Мне кажется, мои сообщения выше не флуд ни разу
Alexander
алегофлуд был
Alexander
@haskell_blah
Ю ли я? 🤔
А в чём плюсы-минусы Haskero в сравнении с HIE?
Combot
combot.org/c/-1001043143583
sherzod
Но он хотя бы существует как индвид? Или это коллектив?
Если это не шутка, его можно здесь увидеть (если не шутка тоже можно) ) https://www.youtube.com/watch?v=GhERMBT7u4w
sherzod
Но возможно это его коллективная проекция в наше пространство.
кана
хм, я думал он молодой
Alexander
@kana_sama, у меня есть один аргумент за Free-монады: Я могу этот подход портировать в C++ без особых ограничений. А вот final tagless не могу :(
кана
хм, так интерфейсы же просто
кана
это же простой IoC
Maxim
(врываюсь в диалог) чё такое этот ваш final tagless?
кана
interface Adventure { void say(string text); } void script(Adventure a) { a.say("hello"); }
Alexander
хм, так интерфейсы же просто
Это будет уже совсем другое.
Anonymous
Игра найди джависта
кана
да нет, это же ровно оно - проброс словарика с функциями, экзист квантифицированно
кана
нет, final tagless он про терминальные коалгебры и финальные интерпретаторы
IC
не обязательно монады, не?
Alexander
Зачем тогда он нужен, пишите сразу в ООП языке вроде Скалы
кана
Alexander
В общем, final tagless мною ощущается как побег из ФП.
кана
он и есть, это ооп
Alexander
Если это ООП, то где наследование?
кана
это некое более абстрактное ооп, которое определяют через existential quantification
Alexander
А объекты тогда где?
кана
инстанс класса тут есть объект
Alexander
А состояние объектов тогда где?
Alexander
Инкапсуляция чего тут происходит, если не состояния, как во всяком ООП?
кана
тут абстракция над методами, мы получаем Int -> a, не зная его реализации
кана
ща
кана
лекцию найду
Alexander
А ООП - это абстракция над состоянием.
Alexander
Как в "final tagless ООП" из метода вернуть другой объект с состоянием, скрытый за своим интерфейсом? Типичная задача Джавоподобного ООП.
IC
А ООП - это абстракция над состоянием.
это точно не ООП курильщика?
кана
ну собственно я вот тоже думаю, это какое-то джавовое ооп
Alexander
В общем, мой вердикт: функциональщики придумали какое-то свое ООП, не имеющее ничего общего ни с джавоподобным, ни с аланкеевским
Alexander
Final tagless не ООП
IC
Final tagless не ООП
ООП не нужен имхо
Alexander
А вот ИП - да
IC
ООП не нужен имхо
пофиг X это Y или Z, надо баблишко зарабатывать
Ю ли я? 🤔
"Final tagless - это попытка натянуть ООП на ФП"
кана
нашел лекцию кстати https://www.youtube.com/watch?v=lOkG7Xyh6Iw
кана
и вот это http://www.cs.utexas.edu/~wcook/Drafts/2012/ecoop2012.pdf
Sergey
простите, с чего лучше начать учить хаскель - с теории категорий или с ТРИЗ?
Зигохистоморфный
@kana_sama я занят, у меня ведьмачьи дела)
кана
что-то я впервые услышал про ТРИЗ вчера и вот уже второй день все его упоминают
Alexander
Я уже и сам в 2014 году исследовал экзистенциальные типы в контексте ООП. И уже тогда обнаружил проблемы, а также абстракцию monad dependency injection. Можете посмотреть на Хабре статьи
Зигохистоморфный
Alexander
кана
в моем определении ооп, которое я всем рассказываю, это просто открытое множество значений и закрытое множество методов, все остальное отбрасывается
кана
собственно я полагаю это ровно exist типы
Alexander
лучше ссылки давай)
https://habr.com/post/211871/ Здесь и далее в трех частях
Зигохистоморфный
ООП это коиндукция на коалгебрах
Alexander
Ваша математика идет вразрез с общеприменительной практикой
кана
Это не ООП, потому что теряется инкапсуляция состояния
не теряется, наоборот, мы не имеем доступ к значению, потому что оно открытое множество, мы не можем его сматчить, мы можем только применять методы, которые возможно меняют состояние, но код изменения состояния для каждого значения есть только у значения, больше никто не знает о нем
Alexander
Я повторю вопрос. В final tagless где инкапсуляция состояния? Такого, чтобы его можно было вернуть под интерфейсом из метода другого инкапсулированного состояния? Абстракцию над потоком исполнения я вижу, абстракцию над состоянием не вижу. Словарь методов - не состояние
Alexander
У вас данные отдельно, а final tagless код - отдельно, и проблем в их раздельном существовании нет.
Зигохистоморфный
ну считай тайпклассы тут как интерфейсы или абстрактные классы
Alexander
Интерфейсы над свойствами потока управления и типов, но не интерфейсами над объектами данных
кана
в final tagless конкретно состояние в функторе
Alexander
Где это?
кана
да в State например
Alexander
Тут нужен код
Alexander
да в State например
На монаде Стейта можно сделать аналог стейтфул-кода. Но не объектов.