module Language.Word ( getWordsConstClusters, getWordsConstLastClusters, getWordsConstStartingClusters, getWordsSounds, ) where import ClassyPrelude hiding (Word, delete, groupBy, isNothing, on, (\\)) import Database.Entity import Database.Esqueleto import Language.Sounds getWordsSounds :: [Entity Word] -> Text getWordsSounds = pack . remove . unpack . sort . mconcat . map (wordWord . entityVal) where remove [] = [] remove [x] = [x] remove (x1:x2:xs) | x1 == x2 = remove (x1:xs) | otherwise = x1 : remove (x2:xs) getWordsConstClusters :: [Entity Word] -> [Text] getWordsConstClusters = getConsonantClustersFiltered filterAllClusters . map (wordWord . entityVal) getWordsConstStartingClusters :: [Entity Word] -> [Text] getWordsConstStartingClusters = getConsonantClustersFiltered filterFirstCluster . map (wordWord . entityVal) getWordsConstLastClusters :: [Entity Word] -> [Text] getWordsConstLastClusters = getConsonantClustersFiltered filterLastCluster . map (wordWord . entityVal)