Это похоже на домашнюю работу ...
Если вы хотите добавить значение (а не опцию) в начало опции списка, вы можете просто сделать это, которое вернет None, если списокопция None:
let liftedAppend item optList =
optList |> Option.bind (fun list -> Some (item :: list))
liftedAppend подпись:
'a -> 'a list option -> 'a list option
Но если говорить о снятии stricto sensu, так как подпись вашей функции добавления:
'a -> 'a list -> 'a list
подпись поднятой функции должна быть:
'a option -> 'a list option -> 'a list option
Это означает, что первый аргумент должен быть опцией, и я предполагаю, что вы хотите проверить, является ли это Some или None.Если так внимательно, прочитайте ответы других.
Вы можете использовать что-то вроде этого, что является выражением вычисления обессахаренного Ланайкса.
let liftedAppend optItem optList =
optList |> Option.bind (fun list ->
optItem |> Option.bind (fun item -> Some (item :: list)))