summaryrefslogtreecommitdiff
path: root/old-lib/resource/doc/synopsis-example.txt
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
committeraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
commite89fdae2fa1626348d8025824a7469252fa85e42 (patch)
treec7d46bbd0494043b4bd6f917a25a7687517d0547 /old-lib/resource/doc/synopsis-example.txt
parent3049b59b35b25381a7c6787444165c200d66e08b (diff)
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'old-lib/resource/doc/synopsis-example.txt')
-rw-r--r--old-lib/resource/doc/synopsis-example.txt51
1 files changed, 51 insertions, 0 deletions
diff --git a/old-lib/resource/doc/synopsis-example.txt b/old-lib/resource/doc/synopsis-example.txt
new file mode 100644
index 000000000..8c992339e
--- /dev/null
+++ b/old-lib/resource/doc/synopsis-example.txt
@@ -0,0 +1,51 @@
+
+The standard way of building an application has the following modules.
+
+An abstract syntax:
+```
+ abstract Music = {
+ cat
+ Kind,
+ Property ;
+ fun
+ PropKind : Kind -> Property -> Kind ;
+ Song : Kind ;
+ American : Property ;
+ }
+```
+A domain lexicon interface:
+```
+ interface LexMusic = open Cat in {
+ oper
+ song_N : N ;
+ american_A : A ;
+ }
+```
+A functor on ``Syntax`` and the domain lexicon interface:
+```
+ incomplete concrete MusicI of Music = open Syntax, MusicLex in {
+ lincat
+ Kind = CN ;
+ Property = AP ;
+ lin
+ PropKind k p = mkCN p k ;
+ Song = mkCN song_N ;
+ American = mkAP american_A ;
+ }
+```
+For each language, an instance of the domain lexicon:
+```
+ instance LexMusicGer of LexMusic = CatGer ** open ParadigmsGer in {
+ oper
+ song_N = mkN "Lied" "Lieder" neuter ;
+ american_A = mkA "amerikanisch" ;
+ }
+```
+For each language, an instantiation of the functor:
+```
+ --# -path=.:present:prelude
+
+ concrete MusicGer of Music = MusicI with
+ (Syntax = SyntaxGer),
+ (LexMusic = LexMusicGer) ;
+```