on master help sign in
Fix buglet in Show instances for list/vect
commitddba413bd0fad045838a52a0b1beb176845a1ebb authorEdwin Brady <eb@cs.st-andrews.ac.uk> dateTue 29 Nov 2011, 17:00 (15 years ago) parentc997a48
3 files changed+15−15
lib/prelude.idr+4−4 lib/prelude/list.idr+8−8 lib/prelude/vect.idr+3−3
lib/prelude.idr+4−4
@@ -44,8 +44,8 @@ instance (Show a, Show b) => Show (a, b) where {
4444instance Show a => Show (List a) where {
4545 show xs = "[" ++ show' xs ++ "]" where {
4646 show' : Show a => List a -> String;
47− show' Nil = "";
48− show' (x :: Nil) = show x;
47+ show' [] = "";
48+ show' [x] = show x;
4949 show' (x :: xs) = show x ++ ", " ++ show' xs;
5050 }
5151}
@@ -53,8 +53,8 @@ instance Show a => Show (List a) where {
5353instance Show a => Show (Vect a n) where {
5454 show xs = "[" ++ show' xs ++ "]" where {
5555 show' : Show a => Vect a n -> String;
56− show' VNil = "";
57− show' (x :: VNil) = show x;
56+ show' [] = "";
57+ show' [x] = show x;
5858 show' (x :: xs) = show x ++ ", " ++ show' xs;
5959 }
6060}
lib/prelude/list.idr+8−8
@@ -7,32 +7,32 @@ infixr 7 :: ;
77data List a = Nil | (::) a (List a);
88
99rev : List a -> List a;
10−rev xs = revAcc Nil xs where {
10+rev xs = revAcc [] xs where {
1111 revAcc : List a -> List a -> List a;
12− revAcc acc Nil = acc;
12+ revAcc acc [] = acc;
1313 revAcc acc (x :: xs) = revAcc (x :: acc) xs;
1414}
1515
1616length : List a -> Int;
17−length Nil = 0;
17+length [] = 0;
1818length (x :: xs) = 1 + length xs;
1919
2020take : Int -> List a -> List a;
21−take 0 xs = Nil;
22−take n Nil = Nil;
21+take 0 xs = [];
22+take n [] = [];
2323take n (x :: xs) = x :: take (n-1) xs;
2424
2525drop : Int -> List a -> List a;
2626drop 0 xs = xs;
27−drop n Nil = Nil;
27+drop n [] = [];
2828drop n (x :: xs) = drop (n-1) xs;
2929
3030map : (a -> b) -> List a -> List b;
31−map f Nil = Nil;
31+map f [] = [];
3232map f (x :: xs) = f x :: map f xs;
3333
3434filter : (y -> Bool) -> List y -> List y;
35−filter pred Nil = Nil;
35+filter pred [] = [];
3636filter pred (x :: xs) with (pred x, filter pred xs) {
3737 filter pred (x :: xs) | (True, fxs) = x :: fxs;
3838 filter pred (x :: xs) | (False, fxs) = fxs;
lib/prelude/vect.idr+3−3
@@ -17,7 +17,7 @@ instance Eq (Fin n) where {
1717infixr 7 :: ;
1818
1919data Vect : Set -> Nat -> Set where
20− Nil : Vect a O
20+ Nil : Vect a O
2121 | (::) : a -> Vect a k -> Vect a (S k);
2222
2323vlookup : Fin n -> Vect a n -> a;
@@ -25,11 +25,11 @@ vlookup fO (x :: xs) = x;
2525vlookup (fS k) (x :: xs) = vlookup k xs;
2626
2727vapp : Vect a n -> Vect a m -> Vect a (n + m);
28−vapp Nil ys = ys;
28+vapp [] ys = ys;
2929vapp (x :: xs) ys = x :: vapp xs ys;
3030
3131vfilter : (a -> Bool) -> Vect a n -> (p ** Vect a p);
32−vfilter p Nil = ( _ ** Nil );
32+vfilter p [] = ( _ ** [] );
3333vfilter p (x :: xs) with (vfilter p xs) {
3434 vfilter p (x :: xs) | ( _ ** xs' )
3535 = if (p x) then ( _ ** x :: xs' ) else ( _ ** xs' );