summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2015-11-09 10:43:24 +0000
committeraarne <aarne@chalmers.se>2015-11-09 10:43:24 +0000
commit73861c2993405a907d032ec42ef19a8cb98358b5 (patch)
tree247cc98f9d4b980cafb35aafe9d744167af6d489 /examples
parentce6557f1f216f68668752319001ac36c29a03c4d (diff)
started Estonian phrasebook modules to test AppEst
Diffstat (limited to 'examples')
-rw-r--r--examples/phrasebook/GreetingsEst.gf32
-rw-r--r--examples/phrasebook/Makefile2
-rw-r--r--examples/phrasebook/PhrasebookEst.gf9
-rw-r--r--examples/phrasebook/SentencesEst.gf62
-rw-r--r--examples/phrasebook/WordsEst.gf339
5 files changed, 443 insertions, 1 deletions
diff --git a/examples/phrasebook/GreetingsEst.gf b/examples/phrasebook/GreetingsEst.gf
new file mode 100644
index 000000000..69648be58
--- /dev/null
+++ b/examples/phrasebook/GreetingsEst.gf
@@ -0,0 +1,32 @@
+--# -coding=latin1
+concrete GreetingsEst of Greetings = SentencesEst [Greeting,mkGreeting] ** open Prelude in {
+
+---- TODO: real Estonian
+
+lin
+ GBye = mkGreeting "hei hei" ;
+ GCheers = mkGreeting "terveydeksi" ;
+ GDamn = mkGreeting "hitto" ;
+ GExcuse, GExcusePol = mkGreeting "anteeksi" ;
+ GGoodDay = mkGreeting "hyvää päivää" ;
+ GGoodEvening = mkGreeting "hyvää iltaa" ;
+ GGoodMorning = mkGreeting "hyvää huomenta" ;
+ GGoodNight = mkGreeting "hyvää yötä" ;
+ GGoodbye = mkGreeting "näkemiin" ;
+ GHello = mkGreeting "hei" ;
+ GHelp = mkGreeting "apua" ;
+ GHowAreYou = mkGreeting "mitä kuuluu" ;
+ GLookOut = mkGreeting "varo" ;
+ GNiceToMeetYou = mkGreeting "hauska tutustua" ;
+ GPleaseGive = mkGreeting "ole hyvä" ;
+ GPleaseGivePol = mkGreeting "olkaa hyvä" ;
+ GSeeYouSoon = mkGreeting "nähdään pian" ;
+ GSorry, GSorryPol = mkGreeting "anteeksi" ;
+ GThanks = mkGreeting "kiitos" ;
+ GTheCheck = mkGreeting "lasku" ;
+ GCongratulations = mkGreeting "onnittelut";
+ GHappyBirthday = mkGreeting "hyvää syntymäpäivää" ;
+ GGoodLuck = mkGreeting "onnea" ;
+ GWhatTime = mkGreeting "paljonko kello on" | mkGreeting "mitä kello on" ;
+
+}
diff --git a/examples/phrasebook/Makefile b/examples/phrasebook/Makefile
index cb8e488fa..589737517 100644
--- a/examples/phrasebook/Makefile
+++ b/examples/phrasebook/Makefile
@@ -1,7 +1,7 @@
compile = runghc Compile
forApp:
- $(compile) -opt Bul Cat Chi Dut Eng Fin Fre Ger Hin Ita Jpn Spa Swe Tha
+ $(compile) -opt Bul Cat Chi Dut Eng Est Fin Fre Ger Hin Ita Jpn Spa Swe Tha
make gfos
.PHONY: gfos
diff --git a/examples/phrasebook/PhrasebookEst.gf b/examples/phrasebook/PhrasebookEst.gf
new file mode 100644
index 000000000..687cf1b45
--- /dev/null
+++ b/examples/phrasebook/PhrasebookEst.gf
@@ -0,0 +1,9 @@
+--# -path=.:present
+
+concrete PhrasebookEst of Phrasebook =
+ GreetingsEst,
+ WordsEst ** open
+ SyntaxEst,
+ Prelude in {
+
+}
diff --git a/examples/phrasebook/SentencesEst.gf b/examples/phrasebook/SentencesEst.gf
new file mode 100644
index 000000000..735f0376f
--- /dev/null
+++ b/examples/phrasebook/SentencesEst.gf
@@ -0,0 +1,62 @@
+--# -coding=latin1
+concrete SentencesEst of Sentences = NumeralEst ** SentencesI
+
+{- ---- TODO functor exceptions
+ - [Is, IsMass, NameNN, ObjMass,
+ IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
+ WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale,
+ NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl,
+ GObjectPlease,
+ NPNationality, mkNPNationality,
+ Country, PCountry
+ ]
+-}
+
+
+with
+ (Syntax = SyntaxEst),
+ (Symbolic = SymbolicEst),
+ (Lexicon = LexiconEst) **
+ open SyntaxEst, ExtraEst, (P = ParadigmsEst), (V = VerbEst), Prelude in {
+
+{- ---- TODO: functor exceptions for Est
+
+ lincat
+ Country = {np : NP ; isExternal : Bool} ;
+ lin
+ PCountry x = mkPhrase (mkUtt x.np) ;
+ oper
+ NPNationality = {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} ;
+ NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
+ CNPlace = {name : CN ; isExternal : Bool ; isPl : Bool} ;
+
+ placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
+ let name : NP = mkNP det kind.name in {
+ name = name ;
+ at = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.adessive P.inessive)) name ;
+ to = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.allative P.illative)) name ;
+ from = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.ablative P.elative)) name
+ } ;
+
+ lin
+ Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- tämä pizza on herkullista
+ IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista
+ NameNN = mkNP (P.mkPN (P.mkN "NN" "NN:iä")) ;
+
+ IMale, IFemale =
+ {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = ProDropPoss i_Pron} ;
+ YouFamMale, YouFamFemale =
+ {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = ProDropPoss youSg_Pron} ;
+ YouPolMale, YouPolFemale =
+ {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = ProDropPoss youPol_Pron} ;
+ WeMale, WeFemale =
+ {name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = ProDropPoss we_Pron} ;
+ YouPlurFamMale, YouPlurFamFemale, YouPlurPolMale, YouPlurPolFemale =
+ {name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = ProDropPoss youPl_Pron} ;
+
+ ObjMass = PartCN ;
+
+ GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "kiitos"))) ;
+-}
+
+ }
diff --git a/examples/phrasebook/WordsEst.gf b/examples/phrasebook/WordsEst.gf
new file mode 100644
index 000000000..0ff86a967
--- /dev/null
+++ b/examples/phrasebook/WordsEst.gf
@@ -0,0 +1,339 @@
+-- (c) 2010-2015 Aarne Ranta under LGPL
+--# -coding=latin1
+
+concrete WordsEst of Words = SentencesEst **
+ open
+ SyntaxEst, ParadigmsEst, (L = LexiconEst),
+ Prelude, (E = ExtraEst) in {
+
+ flags optimize = noexpand ;
+
+ lin
+
+---- TODO most Est words
+
+-- kinds
+
+ Apple = mkCN L.apple_N ;
+ Beer = mkCN L.beer_N ;
+ Bread = mkCN L.bread_N ;
+---- Cheese = mkCN (mkN "juusto") ;
+---- Chicken = mkCN (mkN "kana") ;
+---- Coffee = mkCN (mkN "kahvi") ;
+ Fish = mkCN L.fish_N ;
+---- Meat = mkCN (mkN "liha") ;
+ Milk = mkCN L.milk_N ;
+---- Pizza = mkCN (mkN "pizza") ;
+ Salt = mkCN L.salt_N ;
+---- Tea = mkCN (mkN "tee") ;
+ Water = mkCN L.water_N ;
+ Wine = mkCN L.wine_N ;
+
+-- qualities
+
+ Bad = L.bad_A ;
+---- Boring = mkA "tylsä" ;
+---- Cheap = mkA "halpa" ;
+ Cold = L.cold_A ;
+---- Delicious = mkA "herkullinen" ;
+---- Expensive = mkA "kallis" ;
+---- Fresh = mkA "tuore" ;
+ Good = L.good_A ;
+---- Suspect = mkA "epäilyttävä" ;
+ Warm = L.warm_A ;
+
+{- ---- TODO: everything below this
+
+-- places
+
+ Restaurant = mkPlace (mkN "ravintola") ssa ;
+ Bank = mkPlace (mkN "pankki") ssa ;
+ PostOffice = mkPlace (mkN "posti") ssa ;
+ Bar = mkPlace (mkN "baari") ssa ;
+ Toilet = mkPlace (mkN "vessa") ssa ;
+ Museum = mkPlace (mkN "museo") ssa ;
+ Airport = mkPlace (mkN "lento" (mkN "kenttä")) lla ;
+ Station = mkPlace (mkN "asema") lla ;
+ Hospital = mkPlace (mkN "sairaala") ssa ;
+ Church = mkPlace (mkN "kirkko") ssa ;
+ Cinema = mkPlace (mkN "elokuva" (mkN "teatteri")) ssa ;
+ Theatre = mkPlace (mkN "teatteri") ssa ;
+ Shop = mkPlace (mkN "kauppa") ssa ;
+ Park = mkPlace (mkN "puisto") ssa ;
+ Hotel = mkPlace (mkN "hotelli") ssa ;
+ University = mkPlace (mkN "yliopisto") lla ;
+ School = mkPlace (mkN "koulu") lla ;
+
+ CitRestaurant cit = {
+ name = mkCN cit (mkN "ravintola") ; isExternal = False ; isPl = False
+ } ;
+ Parking = mkPlace (mkN "pysäköinti" (mkN "alue")) lla ;
+ Supermarket = mkPlace (mkN "supermarket") ssa ;
+ Pharmacy = mkPlace (mkN "apteekki") ssa ;
+ Center = mkPlace (mkN "keskusta") ssa ;
+ Cafeteria = mkPlace (mkN "kahvila") ssa ;
+ Disco = mkPlace (mkN "disko") ssa ;
+ Pub = mkPlace (mkN "pub") ssa ;
+ AmusementPark = mkPlace (mkN "huvi" (mkN "puisto")) ssa ;
+ Zoo = mkPlace (mkN "eläin" (mkN "tarha")) ssa ;
+
+-- currencies
+
+ DanishCrown = mkCN (mkN "Tanskan kruunu") | mkCN (mkN "kruunu") ;
+ Dollar = mkCN (mkN "dollari") ;
+ Euro = mkCN (mkN "euro") ;
+ Lei = mkCN (mkN "lei") ;
+ Leva = mkCN (mkN "leva") ;
+ NorwegianCrown = mkCN (mkN "Norjan kruunu") | mkCN (mkN "kruunu") ;
+ Pound = mkCN (mkN "punta") ;
+ Rouble = mkCN (mkN "rupla") ;
+ SwedishCrown = mkCN (mkN "Ruotsin kruunu") | mkCN (mkN "kruunu") ;
+ Zloty = mkCN (mkN "zloty" "zlotyja") ;
+
+-- nationalities
+
+ Belgian = mkA "belgialainen" ;
+ Belgium = {np = mkNP (mkPN "Belgia") ; isExternal = False} ;
+ Bulgarian = mkNat (mkPN "bulgaria") (mkPN "Bulgaria") (mkA "bulgarialainen") ;
+ Catalan = mkNat (mkPN "katalaani") (mkPN "Katalonia") (mkA "katalonialainen") ;
+ Danish = mkNat (mkPN "tanska") (mkPN "Tanska") (mkA "tanskalainen") ;
+ Dutch = mkNat (mkPN "hollanti") (mkPN "Hollanti") (mkA "hollantilainen") ;
+ English = mkNat (mkPN "englanti") (mkPN "Englanti") (mkA "englantilainen") ;
+ Finnish =
+ mkNat (mkPN (mkN "suomi" "suomia")) (mkPN (mkN "Suomi" "Suomia"))
+ (mkA "suomalainen") ;
+ Flemish = mkNP (mkPN "flaami") ;
+ French = mkNat (mkPN "ranska") (mkPN "Ranska") (mkA "ranskalainen") ;
+ German = mkNat (mkPN "saksa") (mkPN "Saksa") (mkA "saksalainen") ;
+ Italian = mkNat (mkPN "italia") (mkPN "Italia") (mkA "italialainen") ;
+ Norwegian = mkNat (mkPN "norja") (mkPN "Norja") (mkA "norjalainen") ;
+ Polish = mkNat (mkPN "puola") (mkPN "Puola") (mkA "puolalainen") ;
+ Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ;
+ Russian = mkNatExternal (mkPN "venäjä") (mkPN "Venäjä") (mkA "venäläinen") ;
+ Spanish = mkNat (mkPN "espanja") (mkPN "Espanja") (mkA "espanjalainen") ;
+ Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ;
+
+ ---- it would be nice to have a capitalization Predef function
+
+-- means of transportation
+
+ Bike = mkTransport L.bike_N ;
+ Bus = mkTransport (mkN "bussi") ;
+ Car = mkTransport L.car_N ;
+ Ferry = mkTransport (mkN "lautta") ;
+ Plane = mkTransport L.airplane_N ;
+ Subway = mkTransport (mkN "metro") ;
+ Taxi = mkTransport (mkN "taksi") ;
+ Train = mkTransport L.train_N ;
+ Tram = mkTransport (mkN "raitiovaunu") ;
+
+ ByFoot = ParadigmsEst.mkAdv "jalkaisin" ;
+
+
+-- actions
+
+ AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
+ AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
+ AHasName p name = mkCl (nameOf p) name ;
+ AHasRoom p = haveForPerson p.name (mkCN (mkN "huone")) ;
+ AHasTable p = haveForPerson p.name (mkCN (mkN "pöytä")) ;
+ AHungry p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "nälkä")) ;
+ AIll p = mkCl p.name (mkA "sairas") ;
+ AKnow p = mkCl p.name (mkV "tietää") ;
+ ALike p item = mkCl p.name L.like_V2 item ;
+ ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxEst.mkAdv (casePrep (if_then_else Case co.isExternal adessive inessive)) co.np)) ;
+ ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
+ AMarried p = mkCl p.name (ParadigmsEst.mkAdv "naimisissa") ;
+ AReady p = mkCl p.name (ParadigmsEst.mkA "valmis") ;
+ AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
+ ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
+ AThirsty p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "jano")) ;
+ ATired p = mkCl p.name (caseV partitive (mkV "väsyttää")) ;
+ AUnderstand p = mkCl p.name (mkV "ymmärtää") ;
+ AWant p obj = mkCl p.name (mkV2 "haluta") obj ;
+ AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
+
+-- miscellaneous
+
+ QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
+ QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
+ HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksaa"))) ;
+ ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ;
+
+ PropOpen p = mkCl p.name open_Adv ;
+ PropClosed p = mkCl p.name closed_Adv ;
+ PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
+ PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
+ PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
+ PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
+
+
+-- Building phrases from strings is complicated: the solution is to use
+-- mkText : Text -> Text -> Text ;
+
+ PSeeYouDate d = mkText (lin Text (ss ("nähdään"))) (mkPhrase (mkUtt d)) ;
+ PSeeYouPlace p = mkText (lin Text (ss ("nähdään"))) (mkPhrase (mkUtt p.at)) ;
+ PSeeYouPlaceDate p d =
+ mkText (lin Text (ss ("nähdään")))
+ (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
+
+-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
+-- below. Languages without productive genitives must use an equivalent of
+-- "the wife of my son" for non-pronouns.
+
+ Wife = xOf sing (mkN "vaimo") ;
+ Husband = xOf sing L.man_N ;
+ Son = xOf sing L.boy_N ;
+ Daughter = xOf sing (mkN "tytär") ;
+ Children = xOf plur L.child_N ;
+
+-- week days
+
+ Monday = let d = "maanantai" in mkDay (mkPN d) (d + "sin") ;
+ Tuesday = let d = "tiistai" in mkDay (mkPN d) (d + "sin") ;
+ Wednesday = let d = "keskiviikko" in mkDay (mkPN d) (d + "isin") ;
+ Thursday = let d = "torstai" in mkDay (mkPN d) (d + "sin") ;
+ Friday = let d = "perjantai" in mkDay (mkPN d) (d + "sin") ;
+ Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ;
+ Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ;
+
+ Tomorrow = ParadigmsEst.mkAdv "huomenna" ;
+
+-- transports
+
+ HowFar place = mkQS (mkQCl far_IAdv place.name) ;
+ HowFarFrom x y =
+ mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ;
+ HowFarFromBy x y t =
+ mkQS (mkQCl far_IAdv (mkCl y.name
+ (mkVP (mkVP x.from) t))) ;
+ HowFarBy place t =
+ mkQS (mkQCl far_IAdv (mkCl place.name t)) ;
+ -- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ;
+
+ WhichTranspPlace trans place =
+ mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
+
+ IsTranspPlace trans place =
+ mkQS (mkQCl (mkCl (mkVP (mkVP (mkVP (mkV "päästä")) place.to) trans.by))) ;
+ -- pääseekö keskustaan bussilla
+ -- mkQS (mkQCl (E.AdvPredNP place.to L.go_V (E.PartCN (trans.name)))) ;
+ -- meneekö keskustaan bussia
+
+-- modifiers of places
+
+ TheBest = mkSuperl L.good_A ;
+ TheClosest = mkSuperl (mkA (mkN "läheinen") "lähempi" "lähin") ;
+ TheCheapest = mkSuperl (mkA (mkN "halpa") "halvempi" "halvin") ;
+ TheMostExpensive = mkSuperl (mkA (mkN "kallis") "kalliimpi" "kallein") ;
+ TheMostPopular = mkSuperl (mkA "suosittu") ;
+ TheWorst = mkSuperl (mkA "huono") ;
+
+ SuperlPlace sup p = placeNP sup p ;
+
+ oper
+ mkNat : PN -> PN -> A ->
+ {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
+ {lang = mkNP nat ;
+ prop = pro ;
+ country = {np = mkNP co ; isExternal = False}
+ } ;
+
+ mkNatExternal : PN -> PN -> A ->
+ {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
+ {lang = mkNP nat ;
+ prop = pro ;
+ country = {np = mkNP co ; isExternal = True}
+ } ;
+
+ ---- using overloaded paradigms slows down compilation dramatically
+ mkDay : PN -> Str -> {name : NP ; point : Adv ; habitual : Adv} = \d,s ->
+ let day = mkNP d in
+ {name = day ;
+ point = SyntaxEst.mkAdv (casePrep essive) day ;
+ habitual = ParadigmsEst.mkAdv s
+ } ;
+
+ mkPlace : N -> Bool -> {name : CN ; isExternal : Bool ; isPl : Bool} = \p,e -> {
+ name = mkCN p ;
+ isExternal = e ;
+ isPl = False
+ } ;
+ ssa = False ;
+ lla = True ;
+
+ xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
+ relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
+
+ nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
+
+ oper
+ -- do you have a table for five persons
+ haveForPerson : NP -> CN -> Card -> Cl = \p,a,n ->
+ mkCl p have_V2
+---- (mkNP (E.PartCN a) ---- partitive works in questions )
+ (mkNP (mkNP a_Det a)
+ (SyntaxEst.mkAdv for_Prep (mkNP n (mkN "henki" "henkiä")))) ;
+---- (SyntaxEst.mkAdv for_Prep (mkNP (mkDet n)))) ; -- 60s faster compile 25/10/2010
+
+ open_Adv = ParadigmsEst.mkAdv "avoinna" ;
+ closed_Adv = ParadigmsEst.mkAdv "kiinni" ;
+
+ mkTransport : N -> {name : CN ; by : Adv} = \n -> {
+ name = mkCN n ;
+ by = SyntaxEst.mkAdv (casePrep adessive) (mkNP n)
+ } ;
+
+ mkSuperl : A -> Det = \a -> SyntaxEst.mkDet the_Quant (mkOrd a) ;
+
+ far_IAdv = E.IAdvAdv L.far_Adv ;
+
+--------------------------------------------------
+-- New 30/11/2011 AR
+--------------------------------------------------
+
+ lin
+ Thai = mkNat (mkPN "thai") (mkPN "Thaimaa") (mkA "thaimaalainen") ;
+ Baht = mkCN (mkN "baht" "bahteja") ;
+
+ Rice = mkCN (mkN "riisi") ;
+ Pork = mkCN (mkN "sika") ;
+ Beef = mkCN (mkN "nauta") ;
+ Egg = mkCN L.egg_N ;
+ Noodles = mkCN (mkN "nuudeli" "nuudeleita") ;
+ Shrimps = mkCN (mkN "katka" (mkN "rapu")) ;
+ Chili = mkCN (mkN "chili") ;
+ Garlic = mkCN (mkN "valko" (mkN "sipuli")) ;
+ Durian = mkCN (mkN "durian" "durianeja") ;
+ Mango = mkCN (mkN "mango" "mangoja") ;
+ Pineapple = mkCN (mkN "ananas" "ananaksia") ;
+ Coke = mkCN (mkN "coca-cola") ;
+ IceCream = mkCN (mkN "jäätelö" "jäätelöitä") ;
+ Salad = mkCN (mkN "salaatti") ;
+ OrangeJuice = mkCN (mkN "appelsiini" (mkN "mehu")) ;
+ Lemonade = mkCN (mkN "limsa") ;
+
+ Beach = mkPlace (mkN "uima" (mkN "ranta")) lla ;
+
+ ItsRaining = mkCl (mkVP L.rain_V0) ;
+ ItsCold = mkCl (mkVP L.cold_A) ;
+ ItsWarm = mkCl (mkVP L.warm_A) ;
+ ItsWindy = mkCl (mkVP (mkV "tuulla")) ;
+ SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (mkV "paistaa")) ;
+
+ Smoke = mkVP (mkV "tupakoida") ;
+
+ ADoctor = mkProfession (mkN "lääkäri" "lääkäreitä") ;
+ AProfessor = mkProfession (mkN "professori" "professoreita") ;
+ ALawyer = mkProfession (mkN "laki" L.man_N) ;
+ AEngineer = mkProfession (mkN "insinööri" "insinöörejä") ;
+ ATeacher = mkProfession (mkN "opettaja" "opettajia") ;
+ ACook = mkProfession (mkN "kokki") ;
+ AStudent = mkProfession (mkN "opiskelija" "opiskelijoita") ;
+ ABusinessman = mkProfession (mkN "liike" L.man_N) ;
+
+ oper
+ mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
+-}
+
+}