AsUtils.hs revision f0742398d4587242b1a115de113cd17f63dcb6d0
55cf6e01272ec475edea32aa9b7923de2d36cb42Christian Maeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias{- HetCATS/HasCASL/AsUtils.hs
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner $Id$
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias Authors: Christian Maeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias Year: 2003
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias (further) auxiliary functions
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias-}
ad1df93673cf323534cdfe18981ad5daae4c90c0Jonathan von Schroeder
1e622ddf5a057555db1924ddc88475c695c6f7f2Alexis Tsogiasmodule AsUtils where
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasimport As
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasimport Id
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias-- ---------------------------------------------------------------------
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiaskindArity :: Kind -> Int
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiaskindArity(Kind args _ _) =
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias sum $ map prodClassArity args
f88f637f3c7ff472142b07dcc12230375a5f1c28Christian Maeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasprodClassArity :: ProdClass -> Int
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasprodClassArity (ProdClass l _) = length l
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroeder-- ---------------------------------------------------------------------
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
e16b3696b2c173aac14200321868ed81b8f7dc69Christian MaederposOfTypePattern :: TypePattern -> Pos
e16b3696b2c173aac14200321868ed81b8f7dc69Christian MaederposOfTypePattern (TypePattern t _ _) = posOfId t
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasposOfTypePattern (TypePatternToken t) = tokPos t
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasposOfTypePattern (MixfixTypePattern ts) =
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroeder if null ts then nullPos else posOfTypePattern $ head ts
4e95ffc23b9c5f0b5980ab6f1cacbe7bd9789851Alexis TsogiasposOfTypePattern (BracketTypePattern _ ts ps) =
4e95ffc23b9c5f0b5980ab6f1cacbe7bd9789851Alexis Tsogias if null ps then
421def3c7b0b9ca7762f809a2c57c6ee74495ffaJonathan von Schroeder if null ts then nullPos
4b9f1c9f95296f3292b2e53dbc3d196751b862dbJonathan von Schroeder else posOfTypePattern $ head ts
7dc37844730a8b23973139e9720574382de109e7Alexis Tsogias else head ps
93c8c4a8ce75cc2e02e03468a97b896f149d26ceAlexis TsogiasposOfTypePattern (TypePatternArgs as) =
9d05f30775dd499da9e262b5c199b63c86cc239bJonathan von Schroeder if null as then nullPos else
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder let TypeArg t _ _ _ = head as in tokPos t
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder
9503f59b8e16c517ba75df2512b80b354759ad1aJonathan von Schroeder
9503f59b8e16c517ba75df2512b80b354759ad1aJonathan von Schroeder