6
votes

Comment obtenir deux valeurs d'un, point gratuit, à Haskell?

Par exemple, étant donné une valeur, v et une fonction f , est-il un moyen d'obtenir (fv, v) point Gratuit?


0 commentaires

3 Réponses :


11
votes
import Control.Arrow
(g &&& f) v = (g v, f v)
-- ergo,
(id &&& f) v = (v, f v)
(f &&& id) v = (f v, v)

1 commentaires

Ou aussi à partir de contrôler.arrow , premier et second .



13
votes

Alternativement, notez que pour les fonctions h et f avec des types appropriés, xxx

afin que vous puissiez écrire < Pré> xxx


2 commentaires

Je ne pense pas que c'est une section tuple, je pense que c'est standard.


J'aime ça depuis que cela évite l'importation.



5
votes

Que diriez-vous d'utiliser l'instance d'application d'application pour (->) xxx

par exemple xxx < / pré>


0 commentaires