src/Tools/Haskell/Haskell.thy
changeset 74205 5f0f0553762f
parent 74204 c832f35ea571
child 74209 24a2a6ced0ab
equal deleted inserted replaced
74204:c832f35ea571 74205:5f0f0553762f
  2330 
  2330 
  2331 type_op0 :: Name -> (Typ, Typ -> Bool)
  2331 type_op0 :: Name -> (Typ, Typ -> Bool)
  2332 type_op0 name = (mk, is)
  2332 type_op0 name = (mk, is)
  2333   where
  2333   where
  2334     mk = Type (name, [])
  2334     mk = Type (name, [])
  2335     is (Type (name, _)) = True
  2335     is (Type (c, _)) = c == name
  2336     is _ = False
  2336     is _ = False
  2337 
  2337 
  2338 type_op1 :: Name -> (Typ -> Typ, Typ -> Maybe Typ)
  2338 type_op1 :: Name -> (Typ -> Typ, Typ -> Maybe Typ)
  2339 type_op1 name = (mk, dest)
  2339 type_op1 name = (mk, dest)
  2340   where
  2340   where
  2341     mk ty = Type (name, [ty])
  2341     mk ty = Type (name, [ty])
  2342     dest (Type (name, [ty])) = Just ty
  2342     dest (Type (c, [ty])) | c == name = Just ty
  2343     dest _ = Nothing
  2343     dest _ = Nothing
  2344 
  2344 
  2345 type_op2 :: Name -> (Typ -> Typ -> Typ, Typ -> Maybe (Typ, Typ))
  2345 type_op2 :: Name -> (Typ -> Typ -> Typ, Typ -> Maybe (Typ, Typ))
  2346 type_op2 name = (mk, dest)
  2346 type_op2 name = (mk, dest)
  2347   where
  2347   where
  2348     mk ty1 ty2 = Type (name, [ty1, ty2])
  2348     mk ty1 ty2 = Type (name, [ty1, ty2])
  2349     dest (Type (name, [ty1, ty2])) = Just (ty1, ty2)
  2349     dest (Type (c, [ty1, ty2])) | c == name = Just (ty1, ty2)
  2350     dest _ = Nothing
  2350     dest _ = Nothing
  2351 
  2351 
  2352 op0 :: Name -> (Term, Term -> Bool)
  2352 op0 :: Name -> (Term, Term -> Bool)
  2353 op0 name = (mk, is)
  2353 op0 name = (mk, is)
  2354   where
  2354   where