TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #1813 800
Линзы кстати неплохая темка: когда мы фокусируемся на части структуры данных (своеобразная инкапсуляция геттеров и сеттеров в одной сущности).

Линзы неплохо обобщаются через профункторы: один интерфейс для разных операций; сложные операции выражаются через простую композицию "оптических элементов" (условно, как в гомоморфном шифровании).

А профункторная оптика, соответственно, расширяется до рефлексивной, и мы попадаем в мета-программирование.

-- Рефлексивное описание дварфа
dwarfSchema :: ReflectiveSchema
dwarfSchema = ReflectiveSchema
{ _fields =
[ ReflectiveField "name" stringLens [notEmpty] "Dwarf name"
, ReflectiveField "health" healthLens [range 0 100] "Health points"
, ReflectiveField "skills" skillsLens [validSkills] "Skill levels"
]
, _relationships =
[ Relationship "belongsTo" "fortress" fortressIdLens
, Relationship "hasMany" "items" itemsLens
]
}

-- Динамическое построение запросов
buildQuery :: String -> Query
buildQuery "dwarf.skills.mining > 10" =
Query $ dwarfSchema ^. field "skills" . field "mining" . filtered (> 10)


Оптику можно строить во время выполнения, генерация кода, конфигурируемые проекции.
Игрок может задавать собственные запросы... Но тоже нагрузочно конечно.

На хаскеле это всё красиво выглядит, но страшно далёк он от трудового итэ-народа.
  • 🤔 40
  • 🤯 9
  • ❤ 6
More from @lambda_brain
  1. Oct 5, 2026Мнения экспертов по индустрии разработки игр в целом можете при желании найти сами на ютуб…
  2. Oct 5, 2026Просили пояснить за (M)PF геймдев ↑ Сложно сегодня придумать более сложное бизнес-направле…
  3. Oct 5, 2026. Облако драгоценностей за неделю. скоро зима (с) Приватный клуб. В жизни любого проекта н…
  4. Oct 1, 2026Ребята спрашивают, ну ок, моё скромное мнение. у вас где-нибудь можно прочитать ваше мнени…
  5. Sep 30, 2026Ладно, вот вам база, почему так трудно переучиваться с императивного/объектного стиля коди…
  6. Sep 30, 2026Ну, с Днём Рунета! Многие годы Рунет был эталонным примером свободы, а сегодня превратился…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →