Это действительно зависит от того, какой тип конечного автомата вам нужен - вы должны написать больше о вашей конкретной проблеме, чтобы более точно определить проблему.
Тем не менее, один общий и очень распространенный шаблон кодирования конечных автоматов заключается в использовании рекурсивных функций для моделирования состояний и вызовов для изменения состояния модели.
Например, светофор с красным -> зеленым -> оранжевым -> .. циклом можно записать как:
let rec red () =
printfn "In red state"
green ()
and green () =
printfn "In green state"
orange ()
and orange () =
printfn "In orange state"
red ()