Changeset 3906 for src/Pugs/Bind.hs

Show
Ignore:
Timestamp:
05/26/05 12:37:22 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5482
Message:

* starting single-invocant feature branch.

(maybe laso do multi-level MMD param here?)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Bind.hs

    r3565 r3906  
    150150isPair (Cxt _ exp) = isPair exp 
    151151isPair (Syn "=>" [(Val _), _])   = True 
    152 isPair (App (Var "&infix:=>") [(Cxt _ (Val _)), _] [])   = True 
    153 isPair (App (Var "&infix:=>") [(Val _), _] [])   = True 
     152isPair (App (Var "&infix:=>") Nothing [(Cxt _ (Val _)), _])   = True 
     153isPair (App (Var "&infix:=>") Nothing [(Val _), _])   = True 
    154154isPair _                         = False 
    155155 
     
    162162unPair (Cxt _ exp) = unPair exp 
    163163unPair (Syn "=>" [(Val k), exp]) = (vCast k, exp) 
    164 unPair (App (Var "&infix:=>") [(Cxt _ (Val k)), exp] []) = (vCast k, exp) 
    165 unPair (App (Var "&infix:=>") [(Val k), exp] []) = (vCast k, exp) 
     164unPair (App (Var "&infix:=>") Nothing [(Cxt _ (Val k)), exp]) = (vCast k, exp) 
     165unPair (App (Var "&infix:=>") Nothing [(Val k), exp]) = (vCast k, exp) 
    166166unPair x                                = error ("Not a pair: " ++ show x) 
    167167 
     
    181181-} 
    182182bindParams :: VCode -- ^ A code object to perform bindings on 
    183            -> [Exp] -- ^ List of invocants to bind 
     183           -> (Maybe Exp) -- ^ List of invocants to bind 
    184184           -> [Exp] -- ^ List of arguments (actual params) to bind 
    185185           -> MaybeError VCode -- ^ Returns either a new 'VCode' with all the 
     
    232232-} 
    233233bindSomeParams :: VCode -- ^ Code object to perform bindings on 
    234                -> [Exp] -- ^ List of invocant expressions 
     234               -> (Maybe Exp) -- ^ List of invocant expressions 
    235235               -> [Exp] -- ^ List of argument expressions 
    236236               -> MaybeError VCode -- ^ A new 'VCode' structure, augmented 
     
    242242        (invPrms, argPrms) = span isInvocant params 
    243243        (givenInvs, givenArgs) = if null invPrms 
    244             then ([], (invsExp++argsExp)) 
    245             else (invsExp, argsExp) 
     244            then ([], (maybeToList invsExp++argsExp)) 
     245            else (maybeToList invsExp, argsExp) 
    246246 
    247247    let boundInv                = invPrms `zip` givenInvs -- invocants are just bound, params to given