module NounBuildSw where import General import Dictionary import GenRulesSw import TypesSw import RulesSw import Char import Attr substantive :: Substantive -> Genus -> Entry substantive n g = entryI ((hyphenate_compounds.geminator) n) [prValue g] substUtrum :: Substantive -> Entry substUtrum s = substantive s Utr substNeutrum :: Substantive -> Entry substNeutrum s = substantive s Neutr substPl :: Substantive -> Entry substPl s = substantive s GPl substDPl :: Substantive -> Entry substDPl s = substantive s GDPl substVack :: Substantive -> Entry substVack s = substantive s Pend substMasc :: Substantive -> Entry substMasc s = substantive s Utr noun_f :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) noun_f n g (apa,apan,apor,aporna) s = noun_compound n g (apa,apan,apor,aporna,apa,apa) s noun_compound_ng :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) noun_compound_ng n g (apa,apan,apor,aporna,ap,ap2) s = substantive (missing n_f [(SF n d Gen) | n <- values, d <- values]) g where n_f p = (mk_substantive_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff ap) (suff ap2) (suff ap)) p suff = apply_suffixes (tk n s) noun_compound :: Int -> Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) noun_compound n g (apa,apan,apor,aporna,ap,ap2) s = substantive n_f g where n_f p = (mk_substantive_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff ap) (suff ap2) (suff ap)) p suff = apply_suffixes (tk n s) noun_no_genitive :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) noun_no_genitive g (apa,apan,apor,aporna) s = substantive (missing n_f [(SF n d Gen) | n <- values, d <- values]) g where n_f p = (mk_subst_v (suff apa) (suff apan) (suff apor) (suff aporna) (suff apa)) p suff = apply_suffixes s nna :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) nna g (apa,apas,apan,apans,apor,apors,aporna,apornas) s = replace_attr wp_attr w_attr $ replace_attr h_attr w_attr $ set_pos "nna" $ substantive n_f g where n_f p = (mk_nna (suff apa) (suff apas) (suff apan) (suff apans) (suff apor) (suff apors) (suff aporna) (suff apornas)) p suff = apply_suffixes s . connect s connect s end = concat [[(f,(':':e)),(f,('-':e)),(f,e)] | (f,e@(_:_)) <- end] ++ (filter (null . snd) end) nnac :: Genus -> (Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes,Suffixes) -> (String -> Entry) nnac g (apa,apas,apan,apans,apor,apors,aporna,apornas) s = replace_attr wp_attr w_attr $ replace_attr h_attr w_attr $ set_pos "nna" $ substantive n_f g where n_f p = (mk_nna (suff apa) (suff apas) (suff apan) (suff apans) (suff apor) (suff apors) (suff aporna) (suff apornas)) p suff = apply_suffixes s . connect s connect s end = concat [[(f,(':':e)),(f,e)] | (f,e@(_:_)) <- end] ++ (filter (null . snd) end) noun :: Genus -> [String] -> [String] -> [String] -> [String] -> (String -> Entry) noun g apa apan apor aporna s = nounC g apa apan apor aporna apa s nounC :: Genus -> [String] -> [String] -> [String] -> [String] -> [String] -> (String -> Entry) nounC g apa apan apor aporna ap s = substantive n_f g where n_f p = (mk_subst_v apa' apan' apor' aporna' ap') p suff = (s ++) apa' = map suff apa apan' = map suff apan apor' = map suff apor aporna' = map suff aporna ap' = map suff ap -- Declension 1 nn1 :: String -> Entry nn1 = substUtrum . RulesSw.nn1 nn1_flicka :: String -> Entry nn1_flicka = substUtrum . nn1flicka nn1_kyrka :: String -> Entry nn1_kyrka = substUtrum . nn1kyrka nn1_gata :: String -> Entry nn1_gata = substUtrum . nn1gata nn1_olja :: String -> Entry nn1_olja = substUtrum . nn1olja nn1_mamma :: String -> Entry nn1_mamma = substUtrum . nn1mamma nn1_siffra :: String -> Entry nn1_siffra = substUtrum . nn1siffra nn1_dimma :: String -> Entry nn1_dimma = substUtrum . nn1dimma nn1_sopor :: String -> Entry nn1_sopor = substPl . nn1sopor nn1_faggorna :: String -> Entry nn1_faggorna = substDPl . nn1faggorna -- declension 2 nn2 :: String -> Entry nn2 = substUtrum . RulesSw.nn2 nn2_toker :: String -> Entry nn2_toker = substUtrum . nn2toker nn2_herre :: String -> Entry nn2_herre = substUtrum . nn2herre nn2_vers :: String -> Entry nn2_vers = substUtrum . nn2vers nn2_manöver :: String -> Entry nn2_manöver = substUtrum . nn2manöver nn2_nyckel :: String -> Entry nn2_nyckel = substUtrum . nn2nyckel nn2_öken :: String -> Entry nn2_öken = substUtrum . nn2öken nn2_hummer :: String -> Entry nn2_hummer = substUtrum . nn2hummer nn2_kam :: String -> Entry nn2_kam = substUtrum . nn2kam nn2_vägnar :: String -> Entry nn2_vägnar = substPl . nn2vägnar nn2_stadgar :: String -> Entry nn2_stadgar = substPl . nn2stadgar nn2_själ :: String -> Entry nn2_själ = substUtrum . nn2själ nn2_brud :: String -> Entry nn2_brud = substUtrum . nn2brud nn2_jord :: String -> Entry nn2_jord = substUtrum . nn2jord nn2_hjälte :: String -> Entry nn2_hjälte = substUtrum . nn2hjälte nn2_herde :: String -> Entry nn2_herde = substUtrum . nn2herde nn2_by :: String -> Entry nn2_by = substUtrum . nn2by nn2_fågel :: String -> Entry nn2_fågel = substUtrum . nn2fågel nn2_lem :: String -> Entry nn2_lem = substUtrum . nn2lem nn2_moder :: String -> Entry nn2_moder = substUtrum . nn2mor nn2_dotter :: String -> Entry nn2_dotter = substUtrum . nn2dotter nn2_fordran :: String -> Entry nn2_fordran = substUtrum . nn2fordran nn2_verkan :: String -> Entry nn2_verkan = substUtrum . nn2verkan -- Declension 3 :: String -> Entry nn3 = substUtrum . RulesSw.nn3 nn3_flanell :: String -> Entry nn3_flanell = substVack . nn3flanell nn3_gäst :: String -> Entry nn3_gäst = substUtrum . nn3gäst nn3_bygd :: String -> Entry nn3_bygd = substUtrum . nn3bygd nn3_hävd :: String -> Entry nn3_hävd = substUtrum . nn3hävd nn3_kastanj :: String -> Entry nn3_kastanj = substUtrum . nn3kastanj nn3_akademi :: String -> Entry nn3_akademi = substUtrum . nn3akademi nn3_paraply :: String -> Entry nn3_paraply = substVack . nn3paraply nn3_hobby :: String -> Entry nn3_hobby = substUtrum . nn3hobby nn3_vin :: String -> Entry nn3_vin = substNeutrum . nn3vin nn3_paket :: String -> Entry nn3_paket = substVack . nn3paket nn3_element :: String -> Entry nn3_element = substVack . nn3element nn3_fiber :: String -> Entry nn3_fiber = substUtrum . nn3fiber nn3_kläder :: String -> Entry nn3_kläder = substPl . nn3kläder nn3_kliche :: String -> Entry nn3_kliche = substUtrum . nn3kliche nn3_musa :: String -> Entry nn3_musa = substUtrum . nn3musa nn3_gladiolus :: String -> Entry nn3_gladiolus = substUtrum . nn3gladiolus nn3_tand :: String -> Entry nn3_tand = substUtrum . nn3tand nn3_land :: String -> Entry nn3_land = substNeutrum . nn3land nn3_motor :: String -> Entry nn3_motor = substUtrum . nn3motor nn3_parti :: String -> Entry nn3_parti = substNeutrum . nn3parti nn3_poesi :: String -> Entry nn3_poesi = substUtrum . nn3poesi nn3_museum :: String -> Entry nn3_museum = substNeutrum . nn3museum nn3_bok :: String -> Entry nn3_bok = substUtrum . nn3bok nn3_fot :: String -> Entry nn3_fot = substUtrum . nn3fot nn3_bockfot :: String -> Entry nn3_bockfot = substUtrum . nn3bockfot nn3_vän :: String -> Entry nn3_vän = substUtrum . nn3vän -- Declension 4 nn4 :: String -> Entry nn4 = substUtrum . RulesSw.nn4 nn4_studio :: String -> Entry nn4_studio = substUtrum . nn4studio nn_vu_ampere :: String -> Entry nn_vu_ampere = substUtrum . nn4ampere nn4_bonde :: String -> Entry nn4_bonde = substUtrum . nn4bonde -- Declension 5 nn5 :: String -> Entry nn5 = substNeutrum . RulesSw.nn5 nn5_party :: String -> Entry nn5_party = substNeutrum . nn5party nn5_äpple :: String -> Entry nn5_äpple = substNeutrum . nn5äpple nn5_piano :: String -> Entry nn5_piano = substNeutrum . RulesSw.nn5 nn5_arbete :: String -> Entry nn5_arbete = substNeutrum . nn5arbete nn5_samhälle :: String -> Entry nn5_samhälle = substNeutrum . nn5samhälle nn5_knä :: String -> Entry nn5_knä = substNeutrum . nn5knä nn5_bi :: String -> Entry nn5_bi = substNeutrum . nn5bi nn5_frö :: String -> Entry nn5_frö = substNeutrum . nn5frö nn5_abc :: String -> Entry nn5_abc = substNeutrum . nn5abc nn5_anmodan :: String -> Entry nn5_anmodan = substUtrum . nn5anmodan -- Declension 6 vs_ordförande :: String -> Entry vs_ordförande = substUtrum . nn6ordförande nn6_lager :: String -> Entry nn6_lager = substNeutrum . nn6lager nn6_nummer :: String -> Entry nn6_nummer = substNeutrum . nn6nummer nn6_segel :: String -> Entry nn6_segel = substNeutrum . nn6lager nn6 :: String -> Entry nn6 = substNeutrum . RulesSw.nn6 nn6_barn :: String -> Entry nn6_barn = substNeutrum . nn6barn nn6_arv :: String -> Entry nn6_arv = substNeutrum . nn6arv nn6_mil :: String -> Entry nn6_mil = substUtrum . nn6mil nn6_garage :: String -> Entry nn6_garage = substNeutrum . nn6garage nn6_klientel :: String -> Entry nn6_klientel = substVack . nn6klientel nn6_akademiker :: String -> Entry nn6_akademiker = substUtrum . nn6akademiker nn6_papper :: String -> Entry nn6_papper = substNeutrum . nn6papper nn6_program :: String -> Entry nn6_program = substNeutrum . nn6program nn6_kikare :: String -> Entry nn6_kikare = substUtrum . nn6kikare nn_6u_gås :: String -> Entry nn_6u_gås = substUtrum . nn6gås nn_6n_manus :: String -> Entry nn_6n_manus = substNeutrum . nn6manus nn_6u_fader :: String -> Entry nn_6u_fader = substUtrum . nn6far --nn_6n_frx :: String -> Entry --nn_6n_frx = substNeutrum . nn6frx nn_6p_ordalag :: String -> Entry nn_6p_ordalag = substPl . nn6ordalag nn_6u_broder :: String -> Entry nn_6u_broder = substUtrum . nn6broder nn_6u_mus :: String -> Entry nn_6u_mus = substUtrum . nn6mus nn_6u_vaktman :: String -> Entry nn_6u_vaktman = substUtrum . nn6vaktman nn_6v_borst :: String -> Entry nn_6v_borst = substVack . nn6borst -- Declension 7 nn_7u_musical :: String -> Entry nn_7u_musical = substUtrum . nn7musical nn_7p_jeans :: String -> Entry nn_7p_jeans = substPl . no_singular . nn7musical -- pending nouns nn_vv_trall :: String -> Entry nn_vv_trall = substVack . nnvtrall nn_vu_behå :: String -> Entry nn_vu_behå = substUtrum . nnvbehå nn_vu_jojo :: String -> Entry nn_vu_jojo = substUtrum . nnvjojo nn_vn_kansli :: String -> Entry nn_vn_kansli = substNeutrum . nnvkansli nn_vn_faktum :: String -> Entry nn_vn_faktum = substNeutrum . nnvfaktum nn_vn_distikon :: String -> Entry nn_vn_distikon = substNeutrum . nnvdistikon nn_vv_abdomen :: String -> Entry nn_vv_abdomen = substVack . nnvabdomen nn_vn_nomen :: String -> Entry nn_vn_nomen = substNeutrum . nnvnomen nn_vn_understatement :: String -> Entry nn_vn_understatement = substNeutrum . nnvunderstatement nn_vu_franc :: String -> Entry nn_vu_franc = substUtrum . nnvfranc nn_vu_cocktail :: String -> Entry nn_vu_cocktail = substUtrum . nnvcocktail nn_vu_gangster :: String -> Entry nn_vu_gangster = substUtrum . nnvgangster nn_vu_partner :: String -> Entry nn_vu_partner = substUtrum . nnvpartner nn_vu_sandwich :: String -> Entry nn_vu_sandwich = substUtrum . nnvsandwich nn_vn_centrum :: String -> Entry nn_vn_centrum = substNeutrum . nnvcentrum nn_vn_tempo :: String -> Entry nn_vn_tempo = substNeutrum . nnvtempo nn_vp_antecedentia :: String -> Entry nn_vp_antecedentia = substPl . nnvantecedentia nn_vn_alfa_abc :: String -> Entry nn_vn_alfa_abc = substNeutrum . nnvabc nn_vn_garn :: String -> Entry nn_vn_garn = substNeutrum . nnvgarn nn_vn_huvud :: String -> Entry nn_vn_huvud = substNeutrum . nnvhuvud nn_vn_kvantum :: String -> Entry nn_vn_kvantum = substNeutrum . nnvkvantum nn_vn_spektrum :: String -> Entry nn_vn_spektrum = substNeutrum . nnvspektrum nn_vu_blinker :: String -> Entry nn_vu_blinker = substUtrum . nnvblinker nn_vu_dress :: String -> Entry nn_vu_dress = substUtrum . nnvdress nn_vu_hambo :: String -> Entry nn_vu_hambo = substUtrum . nnvhambo nn_vu_kaliber :: String -> Entry nn_vu_kaliber = substUtrum . nnvkaliber nn_vu_klammer :: String -> Entry nn_vu_klammer = substUtrum . nnvklammer nn_vu_playboy :: String -> Entry nn_vu_playboy = substUtrum . nnvplayboy nn_vu_roller :: String -> Entry nn_vu_roller = substUtrum . nnvroller nn_vu_trio :: String -> Entry nn_vu_trio = substUtrum . nnvtrio nn_vv_borr :: String -> Entry nn_vv_borr = substVack . nnvborr nn_vv_test :: String -> Entry nn_vv_test = substVack . nnvtest -- irregular nouns nn_on_narkotikum :: String -> Entry nn_on_narkotikum = substNeutrum . nnonarkotikum nn_ou_examen :: String -> Entry nn_ou_examen = substUtrum . nnoexamen nn_ou_emeritus :: String -> Entry nn_ou_emeritus = substUtrum . nnoemeritus nn_ou_fullmäktig :: String -> Entry nn_ou_fullmäktig = substUtrum . nnofullmäktig -- nn_op_prestanda = substPl . nnoprestanda nn_on_öga :: String -> Entry nn_on_öga = substNeutrum . nnoöga nn_op_data :: String -> Entry nn_op_data = substPl . nnodata nn_ou_officer :: String -> Entry nn_ou_officer = substUtrum . nnoofficer -- no plural nn_0u_mjölk :: String -> Entry nn_0u_mjölk = substUtrum . nn0 nn_0n_oväsen :: String -> Entry nn_0n_oväsen = substNeutrum . nn0oväsen nn_0u_tröst :: String -> Entry nn_0u_tröst = substUtrum . nn0tröst nn_0u_adel :: String -> Entry nn_0u_adel = substUtrum . nn0adel nn_0u_början :: String -> Entry nn_0u_början = substUtrum . nn0början nn_0n_skum :: String -> Entry nn_0n_skum = substNeutrum . nn0skum nn_0u_skam :: String -> Entry nn_0u_skam = substUtrum . nn0skam nn_0v_uran :: String -> Entry nn_0v_uran = substVack . nn0uran nn_0u_fåfänga :: String -> Entry nn_0u_fåfänga = substUtrum . nn0adel nn_0u_biologi :: String -> Entry nn_0u_biologi = substUtrum . nn0biologi nn_0u_brådska :: String -> Entry nn_0u_brådska = substUtrum . nn0brådska nn_0n_smör :: String -> Entry nn_0n_smör = substNeutrum . nn0smör nn_0n_kaffe :: String -> Entry nn_0n_kaffe = substNeutrum . nn0kaffe nn_0n_socker :: String -> Entry nn_0n_socker = substNeutrum . nn0socker nn_0n_aktinium :: String -> Entry nn_0n_aktinium = substNeutrum . nn0aktinium nn_0u_samverkan :: String -> Entry nn_0u_samverkan = substUtrum . nn0januari nn_0v_manna :: String -> Entry nn_0v_manna = substVack . nn0manna nn_0v_januari :: String -> Entry nn_0v_januari = substVack . nn0januari -- definite nouns nn_du_kneken :: String -> Entry nn_du_kneken = substUtrum . nndkneken nn_dn_brådrasket :: String -> Entry nn_dn_brådrasket = substNeutrum . nndbrådrasket -- no inflection nn_in_vaj :: String -> Entry nn_in_vaj = substNeutrum . nni nn_iu_avvaktan :: String -> Entry nn_iu_avvaktan = substUtrum . nni nn_iu_bror :: String -> Entry nn_iu_bror = substUtrum . nni nn_iv_hum :: String -> Entry nn_iv_hum = substVack . nni_ns -- genitive inflection nn_gu_februari :: String -> Entry nn_gu_februari = substUtrum . nngfebruari nn_kol_14 :: String -> Entry nn_kol_14 = substNeutrum . nnkol14 -- multi-words abbreviation invar -- nna_u :: String -> Entry -- nna_u s = entryI (nnai s) [prValue Utr] -- nna_v :: String -> Entry -- nna_v s = entryI (nnai s) [prValue Pend] -- nna_gu :: String -> Entry -- nna_gu s = entryI (nnga s) [prValue Utr] -- multi-words substM :: (SubstM -> Str) -> Genus -> Entry substM n g = entryI n [prValue g] substMUtrum :: (SubstM -> Str) -> Entry substMUtrum s = substM s Utr substMNeutrum :: (SubstM -> Str) -> Entry substMNeutrum s = substM s Neutr substMPl :: (SubstM -> Str) -> Entry substMPl s = substM s GPl substMDPl :: (SubstM -> Str) -> Entry substMDPl s = substM s GDPl substMVack :: (SubstM -> Str) -> Entry substMVack s = substM s Pend substMMasc :: (SubstM -> Str) -> Entry substMMasc s = substM s Utr -- definite nnm_du0_vippen :: String -> Entry nnm_du0_vippen = substMUtrum . nnmdu . words -- genitive nnm_gn0_alter_ego :: String -> Entry nnm_gn0_alter_ego = substMNeutrum . nnmg . words nnm_gu0_best_man :: String -> Entry nnm_gu0_best_man = substMUtrum . nnmg . words -- invariant noun_m :: Genus -> String -> String -> String -> String -> Entry noun_m g s1 s2 s3 s4 = set_pos "nnm" $ nounC g [s1] [s2] [s3] [s4] [] [] nnm_iu0_avvaktan :: String -> Entry nnm_iu0_avvaktan = substMUtrum . nnmi . words cat :: [String] -> (String,String) -> String cat xs (a,w) = unwords (reverse xs ++ [a,w]) nnm_6na_kort_varsel :: String -> Entry nnm_6na_kort_varsel s = noun_m Neutr (cat xs (adj,w)) (cat xs (adj++"a",(dv w ++ "et"))) (cat xs (adj++"a",w)) (cat xs (adj++"a",(dv w ++ "en"))) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_6na_glykemiskt_index :: String -> Entry nnm_6na_glykemiskt_index s = noun_m Neutr (cat xs (adj,w)) (cat xs (glykemisk ++"a",(dv w ++ "et"))) (cat xs (glykemisk++"a",w)) (cat xs (glykemisk++"a",(dv w ++ "en"))) where glykemisk = tk 1 adj (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_6ua_oplockad_gås :: String -> Entry nnm_6ua_oplockad_gås s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"e",w ++ "en")) (cat xs (adj++"e",(vc "ä" w) ++ "s")) (cat xs (adj++"e",(vc "ä" w) ++ "sen")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_6ua_svensk_mästare :: String -> Entry nnm_6ua_svensk_mästare s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"a",w ++ "n")) (cat xs (adj++"a",w)) (cat xs (adj++"a",(tk 1 w) ++ "na")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_6na_välsmort_munläder :: String -> Entry nnm_6na_välsmort_munläder s = noun_m Neutr (cat xs (adj++"t",w)) (cat xs (adj++"da",w ++ "n")) (cat xs (adj++"da",w)) (cat xs (adj++"da",w ++ "na")) where adj = tk 1 adj' (w:adj':xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_0ua_frid :: String -> Entry nnm_0ua_frid s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"a",(w ++ "en"))) [] [] where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_3ua_film :: String -> Entry nnm_3ua_film s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"a",w ++ "en")) (cat xs (adj++"a",w++"er")) (cat xs (adj++"a",w ++ "erna")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_3ua_enarmad_bandit :: String -> Entry nnm_3ua_enarmad_bandit s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"e",w ++ "en")) (cat xs (adj++"e",w++"er")) (cat xs (adj++"e",w ++ "erna")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_1ua_svart_låda :: String -> Entry nnm_1ua_svart_låda s = noun_m Utr (cat xs (adj,w++"a")) (cat xs (adj++"a",w ++ "an")) (cat xs (adj++"a",w++"or")) (cat xs (adj++"a",w ++ "orna")) where (w':adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) w = tk 1 w' nnm_3ua_rolig_historia :: String -> Entry nnm_3ua_rolig_historia s = noun_m Utr (cat xs (adj,w++"a")) (cat xs (adj++"a",w ++ "an")) (cat xs (adj++"a",w++"er")) (cat xs (adj++"a",w ++ "erna")) where (w':adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) w = tk 1 w' nnm_2ua_pojke :: String -> Entry nnm_2ua_pojke s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"a",(dv w ++ "en"))) (cat xs (adj++"a",(dv w ++ "ar"))) (cat xs (adj++"a",(dv w ++ "arna"))) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_2ua_stol :: String -> Entry nnm_2ua_stol s = noun_m Utr (cat xs (adj,w)) (cat xs (adj++"a",(dv w ++ "en"))) (cat xs (adj++"a",w++"ar")) (cat xs (adj++"a",w ++ "arna")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_2ua_naken_blankning :: String -> Entry nnm_2ua_naken_blankning s = noun_m Utr (cat xs (adj,w)) (cat xs ((dv adj)++"a",(w ++ "en"))) (cat xs ((dv adj)++"a",w++"ar")) (cat xs ((dv adj)++"a",w ++ "arna")) where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_0na_fritt_vivre :: String -> Entry nnm_0na_fritt_vivre s = noun_m Neutr (cat xs (adj,w)) (cat xs ((tk 2 adj)++"a",(w ++ "t"))) [] [] where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_gv_modus_vivendi :: String -> Entry nnm_gv_modus_vivendi s = noun_m Pend (cat xs (adj,w)) [] [] [] where (w:adj:xs) = case reverse $ words s of (x:y:z) -> (x:y:z) _ -> ([]:[]:[[]]) nnm_5pc_göranden_och_låtanden :: String -> Entry nnm_5pc_göranden_och_låtanden s = noun_m GPl [] [] (unwords [w1,och,w2]) (unwords [w1++"a",och,w2++"a"]) where (w1:och:[w2]) = case words s of (x:y:[z]) -> (x:y:[z]) _ -> [[],[],[]] nnm_gpc_kreti_och_pleti :: String -> Entry nnm_gpc_kreti_och_pleti s = noun_m GPl [] [] (unwords [w1,och,w2]) [] where (w1:och:[w2]) = case words s of (x:y:[z]) -> (x:y:[z]) _ -> [[],[],[]]