Я хочу написать следующий код:
let someAsync () = async {
if 1 > 2 then return true // Error "this expression is expected to have type unit ..."
// I want to place much code here
return false
}
F# почему-то считает, что надо написать так:
let someAsync () = async {
if 1 > 2 then return true
else
// Much code here (indented!)
return false
}
В последнем случае сообщение об ошибке не выдается. Но, на мой взгляд, обе части кода эквивалентны. Есть ли шанс избежать ненужных вложений и отступов?
UPD. То, о чем я прошу, действительно возможно! Взгляните на пример, см. раздел Пример из реальной жизни< /эм>
Я процитирую код:
let validateName(arg:string) = imperative {
if (arg = null) then return false // <- HERE IT IS
let idx = arg.IndexOf(" ")
if (idx = -1) then return false // <- HERE IT IS
// ......
return true
}
Так что можно, вопрос только в том, можно ли это как-то реализовать в async
, через расширение к модулю или как-то так.