The same code in haskell basis' dim n = replicate n 0 ++ [1] ++ replicate (dim - n - 1) 0 bases' dim = map (basis' dim) [0..dim-1] grad' step quot loc = (/ step) <$> subtract (quot loc) <$> quot <$> zipWith (+) loc <$> fmap (* step) <$> bases' (length loc) grad = grad' 0.01