Ignore:
Timestamp:
May 5, 2014, 3:10:33 PM (11 years ago)
Author:
gobi
Message:

new files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sizechecking/branches/macs/Size.hs

    r25 r27  
    88import Ops 
    99import Data.Supply as S 
     10import Data.Lens.Light 
    1011 
    1112data Unsized 
     
    1920 
    2021 
    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 
     22instance 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 
    2628        in showParen (p>0) $ 
    2729            showString "List " . 
    28             unS size s1 9 . 
     30            unS size (updateCtx s1 9 ctx) . 
    2931            showChar ' ' . 
    30             unS sexp s2 9 
    31     slam f = S $ \s p -> 
    32         let (s1, s2, s3) = S.split3 s 
     32            unS sexp (updateCtx s2 9 ctx) 
     33    slam f = S $ \ctx -> 
     34        let (s1, s2, s3) = S.split3 (getL supply ctx) 
    3335            v1           = S.supplyValue s1 
    34             showV1       = S $ \_ _ -> showVar v1 
     36            showV1       = S $ \_ -> showVar v1 
    3537            v2           = S.supplyValue s2 
    36             showV2       = S $ \_ _ -> showVar v2 
     38            showV2       = S $ \_ -> showVar v2 
     39            p = getL prec ctx 
    3740        in showParen (p>0) $ 
    3841            showChar 'Λ' . 
     
    4144            showVar v2 . 
    4245            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 
    4650        in showParen (p>0) 
    4751        $ showString "Shift " 
    48         . unS e1 s1 2 
     52        . unS e1 (updateCtx s1 2 ctx) 
    4953        . showChar ' ' 
    50         . unS ss s2 2 
     54        . unS ss (updateCtx s2 2 ctx) 
    5155        . showChar ' ' 
    52         . unS e2 s3 2 
     56        . unS e2 (updateCtx s3 2 ctx) 
    5357 
Note: See TracChangeset for help on using the changeset viewer.