As a pattern, [a] is a singleton list: a list containing just one element, a.
As a type, [a] is a list of a-type values. But not as a pattern.
The pattern (a : as) stands for a non-empty list with head element a and the rest of elements as. Use it as the pattern in your equation:
-- toggle [a] = not a:[a]
toggle (a : as) = not a : _______ as
toggle [] = []
You need to complete it by filling in the blanks, to make this definition recursive.
Definitions are recursive when they refer to self to make a helper call to continue doing their job for the remaining part of their input.
The patterns [] (empty list) and (a : as) (non-empty list) are mutually exclusive. More, together they are exhaustive: there are no other possibilities for a list value to be.
But the patterns [] and [a] together are not exhaustive: they do not cover the case of lists of two elements, or longer. The [a] pattern is the same as (a : []), a list with an empty list as its tail.