module Data.Apart.Machinery.Moore (Moore, dumb) where

import "free" Control.Comonad.Cofree (Cofree (..))

type Moore a b = Cofree ((->) b) a

dumb :: a -> Moore a a
dumb x = x :< (const $ dumb x)