summaryrefslogtreecommitdiff
path: root/examples/tutorial/foods/FoodsEng.gf
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-08-16 20:12:45 +0000
committeraarne <aarne@cs.chalmers.se>2007-08-16 20:12:45 +0000
commit3737b9926696b70bdecdef3d38d1a1f9399c734a (patch)
tree990d796fecc00d46608f9a1070256d40ca313e3b /examples/tutorial/foods/FoodsEng.gf
parentf109a7089d9ed422d34aaacc064388e4d5fb1d3c (diff)
foods example moved and completed
Diffstat (limited to 'examples/tutorial/foods/FoodsEng.gf')
-rw-r--r--examples/tutorial/foods/FoodsEng.gf50
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/tutorial/foods/FoodsEng.gf b/examples/tutorial/foods/FoodsEng.gf
new file mode 100644
index 000000000..ba3502b39
--- /dev/null
+++ b/examples/tutorial/foods/FoodsEng.gf
@@ -0,0 +1,50 @@
+--# -path=.:resource:prelude
+
+concrete FoodsEng of Foods = open Prelude in {
+
+ lincat
+ S, Quality = SS ;
+ Kind = {s : Number => Str} ;
+ Item = {s : Str ; n : Number} ;
+
+ lin
+ Is item quality = ss (item.s ++ copula item.n ++ quality.s) ;
+ This = det Sg "this" ;
+ That = det Sg "that" ;
+ These = det Pl "these" ;
+ Those = det Pl "those" ;
+ QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
+ Wine = noun "wine" "wines" ;
+ Cheese = noun "cheese" "cheeses" ;
+ Fish = noun "fish" "fish" ;
+ Pizza = noun "pizza" "pizzas" ;
+ Very = prefixSS "very" ;
+ Fresh = ss "fresh" ;
+ Warm = ss "warm" ;
+ Italian = ss "Italian" ;
+ Expensive = ss "expensive" ;
+ Delicious = ss "delicious" ;
+ Boring = ss "boring" ;
+
+ param
+ Number = Sg | Pl ;
+
+ oper
+ det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} =
+ \n,d,cn -> {
+ s = d ++ cn.s ! n ;
+ n = n
+ } ;
+ noun : Str -> Str -> {s : Number => Str} =
+ \man,men -> {s = table {
+ Sg => man ;
+ Pl => men
+ }
+ } ;
+ copula : Number -> Str =
+ \n -> case n of {
+ Sg => "is" ;
+ Pl => "are"
+ } ;
+}
+