let a = [
1;
2;
3;
if 3 > 2 then
4;
else
5;
6
]
Что не так: «эта конструкция недопустима ... ... Паразитировать это выражение, чтобы указать, что это отдельный элемент списка ...», что я и делаю,
let a = [
1;
2;
3;
(if 3 > 2 then
4
else
5);
6
]
заставляет компилятор сказать мне "непревзойденный" ('". Очевидно, что компилятору не нравятся условные выражения с несколькими строками. Почему это так? И есть ли способ обойти это?
Это тривиальнов этом случае, но при фактическом использовании у меня будут произвольно сложные рекурсивные выражения (следовательно, мне нужно разбить его на несколько строк), и я не хочу разбивать выражение и делать это беспристрастно с помощью добавления в список, а что нет.
РЕДАКТИРОВАТЬ: это работает:
let a = [
1;
2;
3;
if 3 > 2 then yield(
4
)else yield(
5);
6
]
, но несколько более многословно, чем я бы предпочел (5 ключевых слов и 4 скобки для простой троичной операции!). Поиск чего-то более чистого продолжается