summaryrefslogtreecommitdiff
path: root/transfer/examples/prelude.tr
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-30 16:00:06 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-30 16:00:06 +0000
commitcba2fcb9b118cedb603b171ac7d7581c5adb844c (patch)
tree5f777207338134402d07486d334dcc764d933027 /transfer/examples/prelude.tr
parent86df2a69b149c1f4ff2cb9139447f5a6faccd483 (diff)
Moved transfer libraries to transfer/lib
Diffstat (limited to 'transfer/examples/prelude.tr')
-rw-r--r--transfer/examples/prelude.tr217
1 files changed, 0 insertions, 217 deletions
diff --git a/transfer/examples/prelude.tr b/transfer/examples/prelude.tr
deleted file mode 100644
index 162599e0c..000000000
--- a/transfer/examples/prelude.tr
+++ /dev/null
@@ -1,217 +0,0 @@
---
--- Prelude for the transfer language.
---
-
-
---
--- Basic functions
---
-
-const : (A:Type) -> (B:Type) -> A -> B -> A
-const _ _ x _ = x
-
-id : (A:Type) -> A -> A
-id _ x = x
-
-
-
---
--- The Add class
---
-
-Add : Type -> Type
-Add = sig zero : A
- plus : A -> A -> A
-
-zero : (A : Type) -> Add A -> A
-zero _ d = d.zero
-
-plus : (A : Type) -> Add A -> A -> A -> A
-plus _ d = d.plus
-
-sum : (A:Type) -> Add A -> List A -> A
-sum _ d (Nil _) = d.zero
-sum A d (Cons _ x xs) = d.plus x (sum A d xs)
-
--- Operators:
-
-{-
- (x + y) => (plus ? ? x y)
--}
-
--- Instances:
-
-add_Integer : Add Integer
-add_Integer = rec zero = 0
- plus = prim_add_Int
-
-add_String : Add String
-add_String = rec zero = ""
- plus = prim_add_Str
-
-
-
---
--- The Prod class
---
-
-Prod : Type -> Type
-Prod = sig one : A
- times : A -> A -> A
-
-one : (A : Type) -> Prod A -> A
-one _ d = d.one
-
-times : (A : Type) -> Prod A -> A -> A -> A
-times _ d = d.times
-
-product : (A:Type) -> Prod A -> List A -> A
-product _ d (Nil _) = d.one
-product A d (Cons _ x xs) = d.times x (product A d xs)
-
--- Operators:
-
-{-
- (x * y) => (times ? ? x y)
--}
-
--- Instances:
-
-prod_Integer : Add Integer
-prod_Integer = rec one = 1
- times = prim_mul_Int
-
-
-
---
--- The Eq class
---
-
-Eq : Type -> Type
-Eq A = sig eq : A -> A -> Bool
-
-eq : (A : Type) -> Eq A -> A -> A -> Bool
-eq _ d = d.eq
-
-neq : (A : Type) -> Eq A -> A -> A -> Bool
-neq A d x y = not (eq A d x y)
-
-
--- Operators:
-
-{-
- (x == y) => (eq ? ? x y)
- (x /= y) => (neq ? ? x y)
--}
-
--- Instances:
-
-eq_Integer : Eq Integer
-eq_Integer = rec eq = prim_eq_Int
-
-eq_String : Eq String
-eq_String = rec eq = prim_eq_Str
-
-
-
---
--- The Ord class
---
-
-data Ordering : Type where
- LT : Ordering
- EQ : Ordering
- GT : Ordering
-
-Ord : Type -> Type
-Ord A = sig eq : A -> A -> Bool
- compare : A -> A -> Ordering
-
-compare : (A : Type) -> Ord A -> A -> A -> Ordering
-compare _ d = d.compare
-
-ordOp : (Ordering -> Bool) -> (A : Type) -> Ord A -> A -> A -> Bool
-ordOp f A d x y = f (compare A d x y)
-
-lt : (A : Type) -> Ord A -> A -> A -> Bool
-lt = ordOp (\o -> case o of { LT -> True; _ -> False })
-
-le : (A : Type) -> Ord A -> A -> A -> Bool
-le = ordOp (\o -> case o of { GT -> False; _ -> True })
-
-ge : (A : Type) -> Ord A -> A -> A -> Bool
-ge = ordOp (\o -> case o of { LT -> False; _ -> True })
-
-gt : (A : Type) -> Ord A -> A -> A -> Bool
-gt = ordOp (\o -> case o of { GT -> True; _ -> False })
-
--- Operators
-
-{-
- (x < y) => (lt ? ? x y)
- (x <= y) => (le ? ? x y)
- (x >= y) => (ge ? ? x y)
- (x > y) => (gt ? ? x y)
--}
-
--- Instances
-
-ord_Integer : Ord Integer
-ord_Integer = rec eq = prim_eq_Int
- compare = prim_cmp_Int
-
-ord_String : Ord String
-ord_String = rec eq = prim_eq_Str
- compare = prim_cmp_Str
-
-
-
---
--- The Show class
---
-
-Show : Type -> Type
-Show A = sig show : A -> String
-
-show : (A : Type) -> Show A -> A -> String
-show _ d = d.show
-
-
--- Instances
-
-show_Integer : Show Integer
-show_Integer = rec show = prim_show_Int
-
-show_String : Show String
-show_String = rec show = prim_show_Str
-
-
-
---
--- The Monoid class
---
-
-Monoid : Type -> Type
-Monoid = sig mzero : A
- mplus : A -> A -> A
-
-
-
---
--- The Compos class
---
-
-Compos : Type -> Type
-Compos T = sig
- C : Type
- composOp : (c : C) -> ((a : C) -> T a -> T a) -> T c -> T c
- composFold : (B : Type) -> Monoid B -> (c : C) -> ((a : C) -> T a -> b) -> T c -> b
-
-composOp : (T : Type) -> (d : Compos T)
- -> (c : d.C) -> ((a : d.C) -> T a -> T a) -> T c -> T c
-composOp _ d = d.composOp
-
-composFold : (T : Type) -> (d : Compos T) -> (B : Type) -> Monoid B
- -> (c : d.C) -> ((a : d.C) -> T a -> b) -> T c -> b
-composFold _ _ d = d.composFold
-