Czy istnieje funkcja lub funkcje w Haskell, które pobierają n argumenty i zwraca n-krotkę? Na przykład:Haskell: funkcja "makeNtuple"?
make3tuple:: a -> a -> a -> (a,a,a)
make3tuple a b c = (a,b,c)
tj .: jak przecinek, ale z więcej niż dwóch argumentów. Oczywiście make3tuple wykonuje tę pracę, ale wydaje mi się, że musi istnieć wbudowany sposób, aby to zrobić, i nie znalazłem jej, lub brakowało jakiegoś sposobu użycia innej wszechobecnej funkcji.
FWIW, powstaje, gdy używany jest liftM3 (lub wyższy). Na przykład:
type RandomState a = State StdGen a
[...]
getTwoRandoms = liftM2 (,) getRandom getRandom
get3Randoms = liftM3 make3tuple getRandom getRandom getRandom
Dzięki!
Dzięki rozszerzeniu o nazwie 'TupleSections', można zastosować to nawet częściowo. Zatem '(, 1,, 2)' jest równe '\ x y -> (x, 1, y, 2)'. –
@amindfv Hahahahaha ... najwyraźniej nie przyszło mi do głowy, że przecinek może być użyty w ten sposób. Dzięki! – gwideman
@gwideman: Zauważ, że są to ich własne operatory: '(,,)' jest całkowicie inne niż '(,) (,)'. Gdybyś próbował je skomponować, otrzymalibyśmy coś takiego: '(,) ((,) 3 4) 5', które jest' ((3,4), 5) ' – amindfv