module Bindings.Stemmer.Simple
( Stemmer(..)
, Language(..)
, Encoding(..)
, init_stemmer
, simple_stem ) where
import Bindings.Stemmer (StemConfig(..), Stemmer(..),
Language(..), Encoding(..),
init_stemmer, new_stemmer,
delete_stemmer, stemword)
import Control.Monad.Trans.Resource (allocate, runResourceT, release)
import Control.Monad.Trans.Class (lift)
simple_stem :: StemConfig -> String -> IO String
simple_stem StemConfig{..} word = runResourceT $ do
(key, stemmer) <- allocate (new_stemmer StemConfig{..}) delete_stemmer
str <- lift $ stemword stemmer word
lift $ release key
return str