Esiste una funzione o funzioni in Haskell che accetta n argomenti e restituisce una n-tupla? Ad esempio:Haskell: funzione 'makeNtuple'?
make3tuple:: a -> a -> a -> (a,a,a)
make3tuple a b c = (a,b,c)
es .: come la virgola, ma per più di due argomenti. Ovviamente make3tuple fa il lavoro, ma ho l'impressione che ci debba essere un modo integrato per farlo, e non l'ho trovato, o mi sono perso un modo per usare qualche altra funzione onnipresente.
FWIW, questo si verifica quando si utilizza liftM3 (o superiore). Ad esempio:
type RandomState a = State StdGen a
[...]
getTwoRandoms = liftM2 (,) getRandom getRandom
get3Randoms = liftM3 make3tuple getRandom getRandom getRandom
Grazie!
Con un'estensione chiamata 'TupleSections', si può anche applicare questa parte. Quindi '(, 1,, 2)' è uguale a '\ x y -> (x, 1, y, 2)'. –
@amindfv Hahahahaha ... ovviamente non mi era venuto in mente che la virgola potesse essere usata in quel modo. Grazie! – gwideman
@gwideman: Si noti che questi sono i loro operatori: '(,,)' è totalmente diverso da '(,) (,)'. Se dovessi provare a comporli, otterresti qualcosa come: '(,) ((,) 3 4) 5', che è' ((3,4), 5) ' – amindfv