functional programming – Passing Multiple Arguments Including A List To A Function In Haskell

Your use of mutliplesOfKLessThanN is not correct

mutliplesOfKLessThanN((3,5) 1000)

Is not interpreted by Haskell as

Apply mutliplesOfKLessThanN with (3,5) and 1000.

but instead it is interpteted as

Apply (3,5) to 1000 and apply multiplesOfKLessThanN to the result.

I think your misconception is in how function application occurs. In many languages function application requires parentheses e.g. f(x). For Haskell parentheses, only ever mean do this operation first, and function application is achieved by putting things next to each other. So f(x) works in Haskell because it is the same as f x, but f(x y) is the same as f(x(y)) and tells Haskell to evaluate x y first and then give it to f.

With your code Haskell can’t apply (3,5) as a function, which is what Haskell is telling you, it expected a function (in fact a specific type of function).

The proper way to write this would be

multiplesOfKLessThanN (3,5) 1000

This should handle that main error you are getting.