Haskell中是否有一个接受n个参数并返回n个元组的函数?例如:

make3tuple:: a -> a -> a -> (a,a,a)
make3tuple a b c = (a,b,c)

即:像逗号,但有两个以上的论点。显然make3tuple可以完成这项工作,但是我觉得必须有一种内置的方法来执行此操作,而我还没有找到它,或者错过了使用某些其他普遍存在的函数的方法。

FWIW,这是在使用liftM3(或更高版本)时出现的。例如:
type RandomState a = State StdGen a
[...]
getTwoRandoms = liftM2 (,) getRandom getRandom
get3Randoms = liftM3 make3tuple getRandom getRandom getRandom

谢谢!

最佳答案

是的。

(,,) :: a -> b -> c -> (a, b, c)
(,,,) :: a -> b -> c -> d -> (a, b, c, d)

等等。

所以你可以写liftM3 (,,) getRandom getRandom getRandom
Haskell编译器可以提供一定大小的此类函数(我认为保证是15元组)

10-04 19:01