{-# LANGUAGE TypeOperators #-} module Identifiers where import Data.List (elem, (++)) data Id = Id data a :* b = a :* b {-| * Unadorned: - Unqualified: '++', 'elem' - Qualified: 'Data.List.++', 'Data.Lis.elem' - Namespaced: v'++', t'++', v'elem', t'elem', v'Id', t'Id', v':*', t':*' * Parenthesized: - Unqualified: @'(++)' [1,2,3] [4,5,6]@ - Qualified: @'(Data.List.++)' [1,2,3] [4,5,6]@ - Namespaced: v'(++)', t'++', v'(:*)', t'(:*)' * Backticked: - Unqualified: @1 '`elem`' [-3..3]@ - Qualified: @1 '`Data.List.elem`' [-3..3]@ - Namespaced: v'`elem`', t'`elem`', v'`Id`', t'`Id`' * Edge cases: - Tuples: '()', '(,,,)' -} foo :: () foo = ()