6
votes

Fonctions externes à Haskell?

Je voudrais écrire un module utilisant une fonction à définir par l'utilisateur. Par exemple:

module A
(someFun) where

someFun x = doSomethingWith externFun x


1 commentaires

Certains commentaires du Downvoter aideraient grandement


3 Réponses :


0
votes

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.


0 commentaires

6
votes

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


0 commentaires

8
votes

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


2 commentaires

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.