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 |