En Haskell nous pouvons écrire le code comme ceci:Haskell Applicative Functor en F #
Comment faire même chose en F #?
J'essaie écrire quelque chose comme code, mais ce n'est pas même
let (<*>) f v =
match v with
| Some v' ->
match f with
| Some f' -> Some (f' v')
| _ -> None
| _ -> None
let cnst a _ = a
let id = cnst <*> cnst // but it seems impossible
let id' x = (Some (cnst x)) <*> (Some(cnst x x)) // it works
Mais dans Haskell id::b->b
, en fa # id:'a->'a Option
Ce que je fais mal? Comment atteindre le même résultat? PS: Comme je le sais avec un applicatif, nos valeurs sont enveloppées dans un contexte, tout comme les fonctions et les fonctions sont également intégrées dans un contexte!
Some((+)3) and Some(2)
Dans ce contexte de cas est l'option
Et méthode Applay
est comme ceci:
let Apply funInContext valInContext =
match funInContext with // unwrap function
| Some f ->
match valInContext with // unwrap value
| Some v -> Some(f v) // applay function on value and wrap it
| _ -> None
| _ -> None
Merci, je me suis rendu compte que je ne comprends pas correctement les 'Applicatifs' – kogoia