Je voudrais écrire un module utilisant une fonction à définir par l'utilisateur. Par exemple:
module A (someFun) where someFun x = doSomethingWith externFun x
3 Réponses :
Non, vous devriez prendre est un argument. Pourquoi pensez-vous que ce serait la même chose pour chaque appel? Cela fonctionne comme n'importe quel autre argument. P>
Non, vous ne pouvez pas faire cela. Le transmettre comme un argument est la voie à suivre. Cependant, vous pouvez éliminer la répétition à l'aide d'une application partielle. Faites juste quelque chose comme celui-ci dans l'autre module:
import A (someFun) someFun' = someFun externFun
Les autres réponses sont erronées: il est em> possible! Il y a une extension peu utilisée appelée implicitparams code> fait exactement pour faire cela. Par exemple: Prelude *B> main
12
Merci. Est-ce une bonne et une façon haskelly d'aller? Existe-t-il des inconvénients de l'utiliser sur la transmission de la fonction sous forme de paramètre (en termes de conception ou d'efficacité)?
@FLAGADABABA Je pense que ce n'est pas très courant, mais je ne connais aucune préoccupation de conception ni d'efficacité de se méfier par rapport à la transmission d'une fonction explicitement.
Certains commentaires du Downvoter aideraient grandement