> -- Geniepro писал(а):
> Да там вообще стиль написания программ какой-то совсем не хаскельный. Вот такой ужасный код:гораздо лучше и понятнее выглядит так:ЗЫ. А теперь перепишите это на Окамль

Ну да, меня это тоже убило. Вместо понятной таблицы переходов, какая-то жуткая каша из кода.
А на окамле (или F#? я только вчера начал как-то ковырять эти языки. пока разбирался с инструментарием) это ж вроде будет что-то вроде:
## Код:
```
let triggerSwitchFunc a b = match (a,b) with
                           | LampOffButtonUp, ButtonDown -> (LampOffButtonDown, [])
                           | LampOnButtonUp,  ButtonDown -> (LampOnButtonDown,  [])
                           | LampOffButtonDown, ButtonUp -> (LampOnButtonUp,    [putStrLn "LampOn"])
                           | LampOnButtonDown,  ButtonUp -> (LampOffButtonUp,   [putStrLn "LampOff"])
                           | _ , _                       -> (state,[]);;
```

Где-то мог наврать. Особенно в месте где [putStrLn "LampOn"]) -- скорее всего тут не совсем так будет.