Здравствуйте, cadet354, Вы писали:
C>Доброго времени, взялся за изучение F#, так что вопрос новичка:
C>функция определяет простое ли число
C>C>let isPrime64 (value:int64) = //обязательно поставить скобки иначе будет считать что int64 - тип возвращаемого значения
C> let isqrt64 n:int64 = n |> float |> sqrt |> int64 // определение верхней границы
C> seq { for a in 2L .. isqrt64 value do yield a} |> Seq.exists(fun checker -> value % checker = 0L)|>not
C>
А лучше написать так:
let isPrime64 value =
let isqrt64 n:int64 = n |> float |> sqrt |> int64 // определение верхней границы
seq { for a in 2L .. isqrt64 value do yield a}
|> Seq.forall(fun checker -> value % checker <> 0L)
Доброго времени, взялся за изучение F#, так что вопрос новичка:
функция определяет простое ли число
let isPrime64 value:int64 =
let isqrt64 n:int64 = n |> float |> sqrt |> int64 // определение верхней границы
seq { for a in 2L .. isqrt64 value do yield a} |> Seq.exists(fun checker -> value % checker = 0L)|>not
// не компилируется, ошибка такая:
error FS0001: Type mismatch. Expecting a
bool -> int64
but given a
bool -> bool.
The type 'int64' does not match the type 'bool'
почему Expecting a bool -> int64 ,
ведь exists возвращает bool.
... << RSDN@Home 1.2.0 alpha 4 rev. 1231>>
Здравствуйте, gandjustas, Вы писали:
G>А лучше написать так:
G>G>let isPrime64 value =
G> let isqrt64 n:int64 = n |> float |> sqrt |> int64 // определение верхней границы
G> seq { for a in 2L .. isqrt64 value do yield a}
G> |> Seq.forall(fun checker -> value % checker <> 0L)
G>
согласен, так понятнее, но ошибка компиляции остается, причем таже самая.
... << RSDN@Home 1.2.0 alpha 4 rev. 1231>>
Здравствуйте, cadet354, Вы писали:
C>Здравствуйте, gandjustas, Вы писали:
G>>А лучше написать так:
G>>G>>let isPrime64 value =
G>> let isqrt64 n:int64 = n |> float |> sqrt |> int64 // определение верхней границы
G>> seq { for a in 2L .. isqrt64 value do yield a}
G>> |> Seq.forall(fun checker -> value % checker <> 0L)
G>>
C>согласен, так понятнее, но ошибка компиляции остается, причем таже самая.
у меня работает...
точно у isPrime64 аннотации нету?
Здравствуйте, gandjustas, Вы писали:
G>точно у isPrime64 аннотации нету?
извини, не увидел твои правки в моем коде
... << RSDN@Home 1.2.0 alpha 4 rev. 1231>>