Вы когда в конце концов начнете читать справочник языка? Разве сложно
заглянуть сюда, чтобы понять где у вас ошибки или отсебятины?
Это как
в этой теме, типов то много, а значит вполне можно и в одну строку:
list(...) = exp(...) ? array(...) : array(...);
А чтобы понимать это, нужно изучать язык. Но стоит повторить, что в данном случае так поступать, это просто расточительство.