# What does "polyadic" mean in the context of functional programming and type systems?

And how does it (or does not) correspond to "polymorphic"? Occasionally I see this notion like in: Implement and represent polyadic operations. I checked Wiktionary but it only gives a general meaning, not specific to functional programming.

It's really simple to understand.

• A function that takes zero arguments is called niladic function.
• A function that takes one argument only is called monadic function.
• A function that takes two arguments is called dyadic function.
• A function that takes three arguments it called triadic function.
• A function that takes multiple arguments is called polyadic function.
• A function that takes a variable number of arguments is called variadic function.

How does this relate to polymorphy? Imho it does not relate to polymorphy at all. I think often times polyadic and variadic are substitutable. See wikipedia for further information.

How does this relate to functional programming?

I think the following wikipedia quote sais it all:

There are many mathematical and logical operations that come across naturally as variadic functions. For instance, the summing of numbers or the concatenation of strings or other sequences are operations that can logically apply to any number of operands.

• How is that different from unary, binary, ternary etc.function? Just a note, in the context of functional programming, a monadic function could also mean something very different (a function that works with a monad).
– Petr
Dec 9, 2012 at 15:05
• It is not different from unary, binary, ternary. It's very much the same. There can be differences depending on the language used. An unary operator can also be called monadic operator. Dec 9, 2012 at 15:08
• What it the difference between a variadic function and a function that takes one argument of type list? Dec 9, 2012 at 16:01
• @Giorgio: The signature and the type of the function. func(List) != func(arg1, arg2... arg_n); This is merely in the typesystem. As an anlogy, think about recursive functions that can always be implemented as stack-based iterative functions. Dec 9, 2012 at 16:04
• @Falcon Look at Haskell's `Text.Printf` for a curried variadic function. Dec 9, 2012 at 19:06