Does your solution look like this?

slow solution

The trickiest part is working out what to report in the base case. You're always supposed to report a list of subsets. The empty set has one subset, namely itself. So you report a list containing the empty set (an empty list, in other words).

For the recursive case, the hints noted that the set {Apple, Orange, Banana} has four subsets that include Apple:

{Apple} {Apple, Orange} {Apple, Banana}

{Apple, Orange, Banana}

and four subsets that don't:

{} {Orange} {Banana} {Orange, Banana}

Each Apple-containing subset is the same as the one below it, but with Apple inserted. And, most important, the ones that don't contain Apple can be found by a recursive call, (subsets (all but first of (set))).

As usual in recursive reporters, there's a combining block, in this case append, which strings together the items of two (in this case) input lists. To find the complete result, append the no-Apple subsets with the result of putting Apple in front of each no-Apple subset.

This solution should remind you of the pascal block, which makes two recursive calls and adds the results. But the pascal block makes two recursive calls with different inputs. This subsets implementation makes the same recursive call twice. That turns out to be really inefficient.

☞ Using a count variable, as you did for the pascal block, count how many recursive calls are made to find the 64 subsets of a six-element list.

☞ Figure out how to reduce the number of recursive calls by avoiding redundant calls.