comparison lib/ur/top.urs @ 643:aa2290c32ce2

Avoid any JavaScript when pages don't need it; update demo prose
author Adam Chlipala <adamc@hcoop.net>
date Tue, 10 Mar 2009 10:44:26 -0400
parents 24fd1edfcaa3
children fcf0bd3d1667
comparison
equal deleted inserted replaced
642:4a125bbc602d 643:aa2290c32ce2
27 con snd = K1 ==> K2 ==> fn t :: (K1 * K2) => t.2 27 con snd = K1 ==> K2 ==> fn t :: (K1 * K2) => t.2
28 con fst3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.1 28 con fst3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.1
29 con snd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.2 29 con snd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.2
30 con thd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.3 30 con thd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.3
31 31
32 con mapUT = fn f :: Type => map (fn _ :: Unit => f) 32 con mapU = K ==> fn f :: K => map (fn _ :: Unit => f)
33 33
34 con ex = fn tf :: (Type -> Type) => 34 con ex = fn tf :: (Type -> Type) =>
35 res ::: Type -> (choice :: Type -> tf choice -> res) -> res 35 res ::: Type -> (choice :: Type -> tf choice -> res) -> res
36 36
37 val ex : tf :: (Type -> Type) -> choice :: Type -> tf choice -> ex tf 37 val ex : tf :: (Type -> Type) -> choice :: Type -> tf choice -> ex tf
44 44
45 val foldUR : tf :: Type -> tr :: ({Unit} -> Type) 45 val foldUR : tf :: Type -> tr :: ({Unit} -> Type)
46 -> (nm :: Name -> rest :: {Unit} 46 -> (nm :: Name -> rest :: {Unit}
47 -> [[nm] ~ rest] => 47 -> [[nm] ~ rest] =>
48 tf -> tr rest -> tr ([nm] ++ rest)) 48 tf -> tr rest -> tr ([nm] ++ rest))
49 -> tr [] -> r :: {Unit} -> folder r -> $(mapUT tf r) -> tr r 49 -> tr [] -> r :: {Unit} -> folder r -> $(mapU tf r) -> tr r
50 50
51 val foldUR2 : tf1 :: Type -> tf2 :: Type -> tr :: ({Unit} -> Type) 51 val foldUR2 : tf1 :: Type -> tf2 :: Type -> tr :: ({Unit} -> Type)
52 -> (nm :: Name -> rest :: {Unit} 52 -> (nm :: Name -> rest :: {Unit}
53 -> [[nm] ~ rest] => 53 -> [[nm] ~ rest] =>
54 tf1 -> tf2 -> tr rest -> tr ([nm] ++ rest)) 54 tf1 -> tf2 -> tr rest -> tr ([nm] ++ rest))
55 -> tr [] -> r :: {Unit} -> folder r -> $(mapUT tf1 r) -> $(mapUT tf2 r) -> tr r 55 -> tr [] -> r :: {Unit} -> folder r -> $(mapU tf1 r) -> $(mapU tf2 r) -> tr r
56 56
57 val foldURX2: tf1 :: Type -> tf2 :: Type -> ctx :: {Unit} 57 val foldURX2: tf1 :: Type -> tf2 :: Type -> ctx :: {Unit}
58 -> (nm :: Name -> rest :: {Unit} 58 -> (nm :: Name -> rest :: {Unit}
59 -> [[nm] ~ rest] => 59 -> [[nm] ~ rest] =>
60 tf1 -> tf2 -> xml ctx [] []) 60 tf1 -> tf2 -> xml ctx [] [])
61 -> r :: {Unit} -> folder r -> $(mapUT tf1 r) -> $(mapUT tf2 r) -> xml ctx [] [] 61 -> r :: {Unit} -> folder r -> $(mapU tf1 r) -> $(mapU tf2 r) -> xml ctx [] []
62 62
63 val foldR : K --> tf :: (K -> Type) -> tr :: ({K} -> Type) 63 val foldR : K --> tf :: (K -> Type) -> tr :: ({K} -> Type)
64 -> (nm :: Name -> t :: K -> rest :: {K} 64 -> (nm :: Name -> t :: K -> rest :: {K}
65 -> [[nm] ~ rest] => 65 -> [[nm] ~ rest] =>
66 tf t -> tr rest -> tr ([nm = t] ++ rest)) 66 tf t -> tr rest -> tr ([nm = t] ++ rest))