diff options
Diffstat (limited to 'deprecated/old-lib/resource/doc/synopsis-example.txt')
| -rw-r--r-- | deprecated/old-lib/resource/doc/synopsis-example.txt | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/deprecated/old-lib/resource/doc/synopsis-example.txt b/deprecated/old-lib/resource/doc/synopsis-example.txt new file mode 100644 index 000000000..8c992339e --- /dev/null +++ b/deprecated/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) ; +``` |
