Nov. 13th, 2010

wizzard: (Default)

(редактированный лог)

основная проблема в том, что я не знаю слов, в которых можно сформулировать этот вопрос :)

грубо говоря, есть dataflow-система - граф потоков и обработчиков.
если считать, что она синхронная, то ее достаточно тривиально типизировать как функцию, которая принимает туплы и выдает туплы, или как монаду List (если я правильно понимаю). при этом у нас получается, скажем так, одномерная система
одна размерность у нас "время", в смысле, функция t -> inputState
а сам обработчик у нас типа () -> (t -> inputState) -> (t -> outputState) (как-то так)

так вот, что делать, если мы хотим разрешить изменение обработчика в процессе?
тогда у нас получается двумерная система, она же "битемпоральная" (не путать с традиционным определением битемпоральной системы, это ниже)
одна ось у нас "время", другая - "версия обработчика". иначе говоря, "данные, известные на момент реального времени Х + обработчик версии Y = результат"
для реалистичной реализации, к сожалению, нужна еще одна ось - данные поступают в виде кортежей (время поступления события, время актуальности события, событие)

так вот, хочется создать систему, которая принимает поток извещений о событиях и поток модификаций
и позволяет посмотреть "видение мира в момент реального времени Х на базе данных, поступивших на момент Y, системой версии Z"
а для того, чтобы она была проще для понимания и поддержания, в ней хочется видеть, как минимум, referential transparency,
и явный контроль side effect'ов.

так вот, все мысли которые приходят мне в голову, разбиваются о то, что эти оси дискретные и хреново дифференцируются
с pure дифференцируемыми total функциями всё как-то намного проще, а вот инстанцирование обьекта в коллекции мне рвет крышу

т.е. почему я вообще думаю про системы типов?
- версионирование кода адхок получается хреновое
- большинство существующих ЯП не очень любят модификацию системы на лету
- если делать новый ЯП (не исключающий возможности написания большинства частей системы, типа тех же обработчиков, на чем-то другом, эдакий концептуальный клей), то ему нужен теоретический бэкграунд
- а в универе нас как-то ничему такому не учили и вряд ли будут, судя по учебному плану.

вопросы, наверное, такие:
1. чего читать?
2. куда смотреть?
3. кто еще думал про такое?

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 1st, 2025 07:52 am
Powered by Dreamwidth Studios