Changeset 27 for sizechecking/branches/macs/Size.hs
- Timestamp:
- May 5, 2014, 3:10:33 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sizechecking/branches/macs/Size.hs
r25 r27 8 8 import Ops 9 9 import Data.Supply as S 10 import Data.Lens.Light 10 11 11 12 data Unsized … … 19 20 20 21 21 instance Size S where 22 unsized = S $ \_ _ -> showChar 'U' 23 bottom = S $ \_ _ -> showChar 'âŽ' 24 list size sexp = S $ \s p -> 25 let (s1, s2) = S.split2 s 22 instance SContext s => Size (S s) where 23 unsized = S $ \_ -> showChar 'U' 24 bottom = S $ \_ -> showChar 'âŽ' 25 list size sexp = S $ \ctx -> 26 let (s1, s2) = S.split2 (getL supply ctx) 27 p = getL prec ctx 26 28 in showParen (p>0) $ 27 29 showString "List " . 28 unS size s1 9.30 unS size (updateCtx s1 9 ctx) . 29 31 showChar ' ' . 30 unS sexp s2 931 slam f = S $ \ s p->32 let (s1, s2, s3) = S.split3 s32 unS sexp (updateCtx s2 9 ctx) 33 slam f = S $ \ctx -> 34 let (s1, s2, s3) = S.split3 (getL supply ctx) 33 35 v1 = S.supplyValue s1 34 showV1 = S $ \_ _-> showVar v136 showV1 = S $ \_ -> showVar v1 35 37 v2 = S.supplyValue s2 36 showV2 = S $ \_ _ -> showVar v2 38 showV2 = S $ \_ -> showVar v2 39 p = getL prec ctx 37 40 in showParen (p>0) $ 38 41 showChar 'Î' . … … 41 44 showVar v2 . 42 45 showChar '.' . 43 unS (f showV1 showV2) s3 0 44 shift e1 ss e2 = S $ \s p -> 45 let (s1, s2, s3) = S.split3 s 46 unS (f showV1 showV2) (updateCtx s3 0 ctx) 47 shift e1 ss e2 = S $ \ctx -> 48 let (s1, s2, s3) = S.split3 (getL supply ctx) 49 p = getL prec ctx 46 50 in showParen (p>0) 47 51 $ showString "Shift " 48 . unS e1 s1 252 . unS e1 (updateCtx s1 2 ctx) 49 53 . showChar ' ' 50 . unS ss s2 254 . unS ss (updateCtx s2 2 ctx) 51 55 . showChar ' ' 52 . unS e2 s3 256 . unS e2 (updateCtx s3 2 ctx) 53 57
Note: See TracChangeset
for help on using the changeset viewer.