Есть исходник с компилируемым рабочим кодом к этой статье (правда, слегка отредактированный). основные изменения — расширения компилятора {-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveAnyClass #-},
data ThreadF next = Fork next next
| Yield next
| Done
deriving (Functor,Applicative, Monad,MonadIO),
liftIO вместо lift. Полный исходник здесь — gist.github.com/SergeyStretovich/43e7dfd93a125131bb2b62216cb19691
Кооперативные потоки с нуля в 33 строках на Хаскеле