Euler Problem 101 - Optimum polynomial
I know it's hard to name things, but try to come up with more descriptive names for your functions. As a general rule, I would avoid using the prefix get... for pure functions. It's just noise and doesn't help the reader understand what the function is. In Haskell we try to describe what things are and less how things are done.

Some names which I think are somewhat better...

zeroPoly :: [Int] -&gt; (Int -&gt; Int)


e.g. zeroPoly [1,2,3] is a polynomial which is zero on 1, 2 and 3.

remove1 :: [a] -&gt; [[a]]


e.g. remove1 as is all the ways of removing one element from the list as. Also, using the polymorphic signature alerts the reader that the function isn't specific to Ints.

I would also introduce a type alias:

type Poly = Int -&gt; Int


so you can write the signature of scalePolynome (and other functions) as:

scalePolynome :: Int -&gt; Int -&gt; Poly -&gt; Poly


which helps to describe better what it is doing. Anywhere you can use the alias  Poly instead of Int -&gt; Int will help the reader.

In fact, I would even write the signature this way:

scalePolynome :: (Int,Int) -&gt; Poly -&gt; Poly


since you use (x,y) tuples elsewhere for points on the function.

You should be careful about using div here. Are you sure that with your basis polynomials you'll always get a integral result? To be safe you might have to perform the calculations with Rationals.

Instead of getBase I would probably call the function basisPolynomials - again, just avoid the prefix get....

Finally, note that your getList and remove functions can be written in terms of the inits and tails functions from Data.List:

import Data.List

remove1 :: [a] -&gt; [[a]]
remove1 as = zipWith (++) (inits as) (tail $ tails as)