Да там вообще стиль написания программ какой-то совсем не хаскельный. Вот такой ужасный код:## Код:
```
-- Функция переходов для счетного триггера.
triggerSwitchFunc state event = case state of
    LampOffButtonUp -> case event of
        ButtonDown -> (LampOffButtonDown, [])
        _ -> (state, [])
    LampOnButtonUp -> case event of
        ButtonDown -> (LampOnButtonDown, [])
        _ -> (state, [])
    LampOffButtonDown -> case event of
        ButtonUp -> (LampOnButtonUp, [putStrLn "LampOn"])
        _ -> (state, [])
    LampOnButtonDown -> case event of
        ButtonUp -> (LampOffButtonUp, [putStrLn "LampOff"])
        _ -> (state, [])
```
гораздо лучше и понятнее выглядит так:## Код:
```
-- Функция переходов для счетного триггера.
triggerSwitchFunc LampOffButtonUp   ButtonDown = (LampOffButtonDown, []) 
triggerSwitchFunc LampOnButtonUp    ButtonDown = (LampOnButtonDown,  [])
triggerSwitchFunc LampOffButtonDown ButtonUp   = (LampOnButtonUp,    [putStrLn "LampOn"])
triggerSwitchFunc LampOnButtonDown  ButtonUp   = (LampOffButtonUp,   [putStrLn "LampOff"])
triggerSwitchFunc _                 _          = (state,             [])
```

ЗЫ. А теперь перепишите это на Окамль