FM-SBLEX-3.0: src/saldo/NounBuildSw.hs
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])
_ -> [[],[],[]]