From e89fdae2fa1626348d8025824a7469252fa85e42 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 22 Jun 2009 15:39:08 +0000 Subject: next-lib renamed to lib, lib to old-lib --- old-lib/resource/doc/synopsis-example.txt | 51 +++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 old-lib/resource/doc/synopsis-example.txt (limited to 'old-lib/resource/doc/synopsis-example.txt') 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) ; +``` -- cgit v1.2.3