summaryrefslogtreecommitdiff
path: root/old-lib/prelude/Prelude.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-12-09 09:47:16 +0000
committeraarne <aarne@chalmers.se>2009-12-09 09:47:16 +0000
commitc8ceed08efcc0bdc1fcbd89bce643d9f52f0991b (patch)
tree5f0b314341c129eba1bc67b8b887fb8a4486fad8 /old-lib/prelude/Prelude.gf
parent101df06f6c8380328d4266adadac3ab6d1bac0b3 (diff)
moving a few things to deprecated
Diffstat (limited to 'old-lib/prelude/Prelude.gf')
-rw-r--r--old-lib/prelude/Prelude.gf142
1 files changed, 0 insertions, 142 deletions
diff --git a/old-lib/prelude/Prelude.gf b/old-lib/prelude/Prelude.gf
deleted file mode 100644
index 56545d051..000000000
--- a/old-lib/prelude/Prelude.gf
+++ /dev/null
@@ -1,142 +0,0 @@
---1 The GF Prelude
-
--- This file defines some prelude facilities usable in all grammars.
-
-resource Prelude = open (Predef=Predef) in {
-
-oper
-
---2 Strings, records, and tables
-
- SS : Type = {s : Str} ;
- ss : Str -> SS = \s -> {s = s} ;
- ss2 : (_,_ : Str) -> SS = \x,y -> ss (x ++ y) ;
- ss3 : (_,_ ,_: Str) -> SS = \x,y,z -> ss (x ++ y ++ z) ;
-
- cc2 : (_,_ : SS) -> SS = \x,y -> ss (x.s ++ y.s) ;
- cc3 : (_,_,_ : SS) -> SS = \x,y,z -> ss (x.s ++ y.s ++ z.s) ;
-
- SS1 : Type -> Type = \P -> {s : P => Str} ;
- ss1 : (A : Type) -> Str -> SS1 A = \A,s -> {s = table {_ => s}} ;
-
- SP1 : Type -> Type = \P -> {s : Str ; p : P} ;
- sp1 : (A : Type) -> Str -> A -> SP1 A = \_,s,a -> {s = s ; p = a} ;
-
- constTable : (A,B : Type) -> B -> A => B = \_,_,b -> \\_ => b ;
- constStr : (A : Type) -> Str -> A => Str = \A -> constTable A Str ;
-
--- Discontinuous constituents.
-
- SD2 : Type = {s1,s2 : Str} ;
- sd2 : (_,_ : Str) -> SD2 = \x,y -> {s1 = x ; s2 = y} ;
-
-
---2 Optional elements
-
--- Missing form.
-
- nonExist : Str = variants {} ;
-
--- Optional string with preference on the string vs. empty.
-
- optStr : Str -> Str = \s -> variants {s ; []} ;
- strOpt : Str -> Str = \s -> variants {[] ; s} ;
-
--- Free order between two strings.
-
- bothWays : Str -> Str -> Str = \x,y -> variants {x ++ y ; y ++ x} ;
-
--- Parametric order between two strings.
-
- preOrPost : Bool -> Str -> Str -> Str = \pr,x,y ->
- if_then_Str pr (x ++ y) (y ++ x) ;
-
---2 Infixes. prefixes, and postfixes
-
--- Fixes with precedences are defined in [Precedence Precedence.html].
-
- infixSS : Str -> SS -> SS -> SS = \f,x,y -> ss (x.s ++ f ++ y.s) ;
- prefixSS : Str -> SS -> SS = \f,x -> ss (f ++ x.s) ;
- postfixSS : Str -> SS -> SS = \f,x -> ss (x.s ++ f) ;
- embedSS : Str -> Str -> SS -> SS = \f,g,x -> ss (f ++ x.s ++ g) ;
-
-
---2 Booleans
-
- param Bool = True | False ;
-
-oper
- if_then_else : (A : Type) -> Bool -> A -> A -> A = \_,c,d,e ->
- case c of {
- True => d ; ---- should not need to qualify
- False => e
- } ;
-
- andB : (_,_ : Bool) -> Bool = \a,b -> if_then_else Bool a b False ;
- orB : (_,_ : Bool) -> Bool = \a,b -> if_then_else Bool a True b ;
- notB : Bool -> Bool = \a -> if_then_else Bool a False True ;
-
- if_then_Str : Bool -> Str -> Str -> Str = if_then_else Str ;
-
- onlyIf : Bool -> Str -> Str = \b,s -> case b of {
- True => s ;
- _ => nonExist
- } ;
-
--- Interface to internal booleans
-
- pbool2bool : Predef.PBool -> Bool = \b -> case b of {
- Predef.PFalse => False ; Predef.PTrue => True
- } ;
-
- init : Tok -> Tok = Predef.tk 1 ;
- last : Tok -> Tok = Predef.dp 1 ;
-
---2 High-level acces to Predef operations
-
- isNil : Tok -> Bool = \b -> pbool2bool (Predef.eqStr [] b) ;
-
- ifTok : (A : Type) -> Tok -> Tok -> A -> A -> A = \A,t,u,a,b ->
- case Predef.eqStr t u of {Predef.PTrue => a ; Predef.PFalse => b} ;
-
---2 Lexer-related operations
-
--- Bind together two tokens in some lexers, either obligatorily or optionally
-
- oper
- glue : Str -> Str -> Str = \x,y -> x ++ BIND ++ y ;
- glueOpt : Str -> Str -> Str = \x,y -> variants {glue x y ; x ++ y} ;
- noglueOpt : Str -> Str -> Str = \x,y -> variants {x ++ y ; glue x y} ;
-
--- Force capitalization of next word in some unlexers
-
- capitalize : Str -> Str = \s -> CAPIT ++ s ;
-
--- These should be hidden, and never changed since they are hardcoded in (un)lexers
-
- BIND : Str = "&+" ;
- PARA : Str = "&-" ;
- CAPIT : Str = "&|" ;
-
---2 Miscellaneous
-
--- Identity function
-
- id : (A : Type) -> A -> A = \_,a -> a ;
-
--- Parentheses
-
- paren : Str -> Str = \s -> "(" ++ s ++ ")" ;
- parenss : SS -> SS = \s -> ss (paren s.s) ;
-
--- Zero, one, two, or more (elements in a list etc)
-
-param
- ENumber = E0 | E1 | E2 | Emore ;
-
-oper
- eNext : ENumber -> ENumber = \e -> case e of {
- E0 => E1 ; E1 => E2 ; _ => Emore} ;
-
-
-}