eqBind :: (Closure a) =>
          (a -> a -> Eval ()) ->
          Bind a -> Bind a -> Eval ()
eqBind eqArg (x0,c0) (x1,c1) =
  do let s0 = getScope c0
         s1 = getScope c1
     (i,s0') <- decl' x0 s0
     let s1' = extendScope s1 x1 (i,Nothing)
     let c0' = putScope c0 s0'
         c1' = putScope c1 s1'
     eqArg c0' c1'
eqBind :: (Closure a) =>
          (a -> a -> Eval ()) ->
          Bind a -> Bind a -> Eval ()
eqBind eqArg (x0,c0) (x1,c1) =
  do let s0 = getScope c0
         s1 = getScope c1
     (i,s0') <- decl' x0 s0
     let s1' = extendScope s1 x1 (i,Nothing)
     let c0' = putScope c0 s0'
         c1' = putScope c1 s1'
     eqArg c0' c1'
eqBind eqArg (x0,c0) (x1,c1) =
  do let s0 = getScope c0
         s1 = getScope c1
     (i,s0') <- decl' x0 s0
     let s1' = extendScope s1 x1 (i,Nothing)
     let c0' = putScope c0 s0'
         c1' = putScope c1 s1'
     eqArg c0' c1'