7
votes

Garder la fonction partiellement appliquée générique

est-il possible d'appliquer partiellement une fonction telle que BPRINTF et l'empêchent d'être restreint en fonction de son utilisation initiale?

J'aimerais faire ce qui suit: < Pré> xxx


0 commentaires

3 Réponses :


9
votes

Vous pouvez ajouter explicitement format argument xxx


2 commentaires

Merci. Quelqu'un peut-il expliquer pourquoi cette application et cette application partielle ne le font pas?


Parce que dans .NET, les fonctions peuvent être génériques et les variables ne peuvent pas. laisser ajouter le format = décrit une fonction; Laisser append = décrit une variable.



12
votes

L'aspect de F # qui cause ceci est appelé restriction de valeur em>. Vous pouvez voir que si vous entrez uniquement les deux que code> déclarations sur f # interactives (de sorte que le compilateur ne déduit pas le type de la première utilisation):

let builder = new System.Text.StringBuilder() 
let append<'T> : Printf.BuilderFormat<'T> -> 'T = Printf.bprintf builder 
append "%i" 10 
append "%s" "Hello"


0 commentaires

6
votes

Vous rencontrez la restriction de valeur F #.

Voici une bonne explication de certains contournements: compréhension des erreurs de restriction de valeur F #

Voici un article assez approfondi expliquant les raisons de la référence: Link


0 commentaires