module Data.Logic.Classes.Arity
    ( Arity(arity)
    ) where

-- |A class that characterizes how many arguments a predicate or
-- function takes.  Depending on the context, a result of Nothing may
-- mean that the arity is undetermined or unknown.  However, even if
-- this returns Nothing, the same number of arguments must be passed
-- to all uses of a given predicate or function.
class Arity p where
    arity :: p -> Maybe Int