Должен ли `occs` быть доступен программисту?

Когда я читаю и реализую FRP, меня смущает семантика функции occs в Event (упомянутая в статьях Conal Elliott). Это очень просто при работе со статическими (чистыми) событиями, но я не понимаю, как это работает с динамическими событиями (такими как нажатия кнопок мыши и т. д.). Например, если occs возвращает все вхождения события, то, насколько я вижу, результатом для occs для динамического события может быть одна из следующих вещей (поскольку еще не все вхождения известны):

  • Известные события на момент вызова
  • Массив/список, который автоматически обновляется вместе с самим событием

Конечно, оба они кажутся немного уродливыми — один нарушает семантическую чистоту, а другой вызывает побочные эффекты.

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


person seadowg    schedule 14.02.2012    source источник
comment
Пожалуйста, не минусуйте, а затем не объясняйте, почему. Это действительно не помогает.   -  person seadowg    schedule 14.02.2012


Ответы (1)


Насколько я понимаю, функция occs, упомянутая в документе Conal, не является частью API. . Скорее, это спецификация модели программирования. Conal использует его для описания семантики различных комбинаторов, но это не то, что вы можете или должны реализовать.

person Heinrich Apfelmus    schedule 16.02.2012
comment
Я думал, что это может быть так, но очень хотел проверить с кем-нибудь. Спасибо Генрих! - person seadowg; 16.02.2012