summaryrefslogtreecommitdiff
path: root/src/PGF/Morphology.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/PGF/Morphology.hs')
-rw-r--r--src/PGF/Morphology.hs30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/PGF/Morphology.hs b/src/PGF/Morphology.hs
index 2eb793d73..9eee71a97 100644
--- a/src/PGF/Morphology.hs
+++ b/src/PGF/Morphology.hs
@@ -1,4 +1,6 @@
-module PGF.Morphology where
+module PGF.Morphology(Lemma,Analysis,Morpho,
+ buildMorpho,
+ lookupMorpho,fullFormLexicon) where
import PGF.ShowLinearize (collectWords)
import PGF.Data
@@ -9,24 +11,16 @@ import Data.List (intersperse)
-- these 4 definitions depend on the datastructure used
-type Morpho = Map.Map String [(Lemma,Analysis)]
-
-lookupMorpho :: Morpho -> String -> [(Lemma,Analysis)]
-lookupMorpho mo s = maybe noAnalysis id $ Map.lookup s mo
-
-buildMorpho :: PGF -> CId -> Morpho
-buildMorpho pgf = Map.fromListWith (++) . collectWords pgf
-
-prFullFormLexicon :: Morpho -> String
-prFullFormLexicon mo =
- unlines [w ++ " : " ++ prMorphoAnalysis ts | (w,ts) <- Map.assocs mo]
+type Lemma = CId
+type Analysis = String
-prMorphoAnalysis :: [(Lemma,Analysis)] -> String
-prMorphoAnalysis lps = unlines [l ++ " " ++ p | (l,p) <- lps]
+newtype Morpho = Morpho (Map.Map String [(Lemma,Analysis)])
-type Lemma = String
-type Analysis = String
+buildMorpho :: PGF -> Language -> Morpho
+buildMorpho pgf lang = Morpho (Map.fromListWith (++) (collectWords pgf lang))
-noAnalysis :: [(Lemma,Analysis)]
-noAnalysis = []
+lookupMorpho :: Morpho -> String -> [(Lemma,Analysis)]
+lookupMorpho (Morpho mo) s = maybe [] id $ Map.lookup s mo
+fullFormLexicon :: Morpho -> [(String,[(Lemma,Analysis)])]
+fullFormLexicon (Morpho mo) = Map.toList mo