> I have problems to understand pattern extraction.
>
> When trying:
>
> ; a = {~~ (foo.c foo.x bar.h) *.[ch]}
> ; echo $a
>
> I get:
>
> {~~ (foo.c foo.x bar.h) *.[ch]}
>
> Is this normal?.
Yes.
I think you want
a = <={~~ (foo.c foo.x bar.h) *.[ch]}
using the absolute worst syntax I've ever invented.
--p