Pouvez-vous passer dans une opération comme "Diviser par 2" ou "Soustrayez 1" à l'aide d'un opérateur partiellement appliqué, où "Ajouter 1" ressemble à ceci:
List.map ((/) _ 2) [2;4;6] //not real syntax, but would equal [1;2;3] List.map (fun x -> x/2) [2;4;6] //real syntax equivalent of the above
3 Réponses :
Vous pouvez écrire une fonction de retournement, quelque chose comme:
let flip f x y = f y x List.map (flip (-) 1) [2;4;6]
Votre flip-fonction peut (tout aussi bien) être définie comme «laissez Flip f x y = f y x '
Il n'y a pas de «sections d'exploitation» dans F #, un Haskell, ni des arguments d'espace réservé (apparemment un a arc). Vous pouvez utiliser un combinateur 'Flip' comme suggéré dans une autre réponse pour inverser l'ordre des arguments, puis appliquer partiellement le premier (maintenant deuxième) argument.
mais j'utiliserais simplement P>
fun x -> x / 2
the ou si vous préférez les opérandes l'inverse: p> flip code> -Solution suggéré par Logan Capaldo peut également être écrit en utilisant un opérateur (ici
>. code>):
> - ) vous obtient très près de votre syntaxe suggérée: p>
List.map ((-) >-< 1) [2;4;6]
:) smiley. :( Frownie .: p langue.> -