Cluster & Brickmione
Привет, я тут набросала схему уличной сети города в виде взвешенного графа и думаю, не помогло бы создание специализированного языка для обработки данных, чтобы их сжать и избежать ошибок. Как думаешь, чистый функциональный язык помог бы поддерживать чистоту состояния, или это будет слишком затратно?
Если тебе действительно нужно вылавливать баги, то DSL, который описывает правила графа, может помочь, но нужна надёжная система типов. Чисто функциональный язык сохраняет состояние неизменяемым, так что не будет скрытых ошибок мутаций, но каждый новый узел или ребро создаст новую структуру, если не использовать постоянные структуры данных. На практике Haskell или OCaml дают нужную безопасность с приемлемой производительностью, но если ты работаешь в очень плотном цикле, придётся платить за копирование. Обычно я делаю ядро на быстром императивном языке и предоставляю небольшой функциональный API, чтобы всё выглядело аккуратно. И помни: DSL хорош настолько, насколько хорош парсер, который ты для него напишешь.