Запутался в схемах выключателей Yampa
Вот некоторые схемы выключателей Yampa по адресу:
http://www.haskell.org/haskellwiki/Yampa/switch
http://www.haskell.org/haskellwiki/Yampa/rSwitch
http://www.haskell.org/haskellwiki/Yampa/kSwitch
(и так далее).
Я обнаружил, чтоswitch
Единственная диаграмма с описанием - самая простая для понимания. Другие, кажется, трудно следовать аналогичным символам, чтобы прочитать диаграммы. Например, чтобы попытаться прочитатьrSwitch
с символами, используемыми вswitch
может быть:
Будьте рекурсивным SF, который всегда получает сигнал типа «in» и возвращает сигнал типа «out». Начните с исходного SF того же типа, но кто-то за пределами функции переключения (квадрат? [Cond])) также может передать новый SF через Событие (типEvent (SF in out)
в подписи) в то время как условие выполнено (для «?» перед квадратом [cond]). В случае события Yampa будет использовать новый SF вместо существующего. Этот процесс является рекурсивным, так как '?' (не может получить это из диаграммы, за исключением того, что подпись rSwitch кажется рекурсивной).
И после того, как я смотрю в источникrSwitch
Похоже, это использоватьswitch
переключиться на тот же инициал SF рекурсивно, покаt
срабатывает (в соответствии с тем, что описано на диаграмме, хотя я не вижу, что особенноеt
будет запущен в исходном коде).
В аркаде Yampa это объясняетdpSwitch
с кодом и примером. И статья об игре «Frag» также используетdpSwitch
, Тем не менееrSwitch
кажется, отсутствует в этих уроках. Так что я действительно не знаю, как использоватьr-
илиk-
последовательные коммутаторы, и в каких случаях они нам понадобятся.