Ответ 1
-
Вложенные для циклов требуют
do
. -
Вам нужно использовать
seq {..}
. Форма{..}
безseq
больше не работает. -
A
when
guard в шаблоне циклаfor
также больше не поддерживается. -
print_any something
устарел. Вместо этого используйтеprintf "%A" something
.
Этот код должен работать:
let evens n =
seq { for x in 1 .. n do if x%2=0 then yield x }
printf "%A" (evens 10)
let squarePoints n =
seq { for x in 1 .. n do
for y in 1 .. n -> x,y }
printf "%A" (squarePoints 3)
Вы все равно можете использовать ->
, если все, что вы хотите сделать, это вернуть одно значение:
let vec1 = [1;2;3]
let vec2 = [4;5;6]
let products = [for x in vec1 do for y in vec2 -> x*y]
Кстати, мне интересно посмотреть, как F # эволюционировала с течением времени. Слишком плохо, что ранние усыновители частично устарели на своих полках (не то, что я возражаю).