Ignore:
Timestamp:
May 2, 2014, 1:59:29 PM (11 years ago)
Author:
gobi
Message:

lint and cleanup

File:
1 edited

Legend:

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

    r19 r20  
    2121    const = Q 
    2222    lam a = Q (unQ.a.Q) 
    23     app a b = Q $ (unQ a) (unQ b) 
     23    app a b = Q $ unQ a (unQ b) 
    2424 
     25eval :: Q a -> a 
    2526eval = unQ 
    26  
    27 instance Num a => Num (Q a) where 
    28     (Q a) + (Q b) = Q (a+b) 
    29     (Q a) - (Q b) = Q (a-b) 
    30     (Q a) * (Q b) = Q (a*b) 
    31     abs (Q a) = Q (abs a) 
    32  
    3327 
    3428{- 
    3529 - show interpreter 
    3630 -} 
     31showVar :: Int -> String -> String 
    3732showVar x = if x>28  
    3833    then showVar (x `div` 29) . showChar (C.chr $ C.ord 'a' + (x `mod` 29)) 
    3934    else showChar $ C.chr $ C.ord 'a' + x 
    4035 
     36-- unS :: Value supply -> Precedence -> ShowS 
    4137newtype S a = S { unS :: S.Supply Int -> Int -> ShowS } 
     38 
    4239instance Lambda S where 
    43     const a = S (\s p -> flip showsPrec a p) 
     40    const a = S (\_ p -> showsPrec p a) 
    4441    app (S fun) (S arg) = S (\s p ->  
    4542        let (s1, s2) = S.split2 s  
     
    5148        in showParen (p>0) $ showChar 'λ' . showVar v . showChar '.' . unS (fun showV) s2 0) 
    5249 
     50ast :: S a -> IO ShowS 
    5351ast a = do 
    5452    s <- S.newSupply 0 (+1) 
    5553    return $ unS a s 0 
    5654 
    57 printAst a = ast a >>= (\a -> putStrLn $ a "") 
    58  
     55printAst :: S a -> IO () 
     56printAst l = ast l >>= (\s -> putStrLn $ s "") 
Note: See TracChangeset for help on using the changeset viewer.