答案说明全部,我将只用每种语言添加一个示例:
def add(x,y):
    return x+y
f = add(1)
print(f(3))
    f = add(1)
TypeError: add() missing 1 required positional argument: 'y'
这既不是部分函数也不是咖喱函数,这只是一个您没有给出所有参数的函数。
python中的咖喱函数应该是这样的:
partialAdd= lambda x: lambda y: x + y
plusOne = partialAdd(1)
print(plusOne(3))
4
在haskell中:
plus :: Int -> Int -> Int
plus x y = x + y
plusOne = plus 1
plusOne 4
5
python中的部分函数:
def first(ls):
    return ls[0]
print(first([2,4,5]))
print(first([]))
  输出
2
print(first([]))
  File "main.py", line 2, in first
    return ls[0]
IndexError: list index out of range
在Haskell中,如您的链接所示:
head [1,2,3]
3
head []
*** Exception: Prelude.head: empty list
  那么什么是总功能?
好吧,基本上是相反的:这是一个适用于该类型任何输入的函数。这是python中的示例:
def addElem(xs, x):
  xs.append(x)
  return xs
如果您使用一些技巧,这甚至适用于无限列表:
def infiniList():
    count = 0
    ls = []
    while True:
        yield ls
        count += 1
        ls.append(count)
ls = infiniList()
for i in range(5):
  rs = next(ls)
print(rs, addElem(rs,6))
[1, 2, 3, 4]
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
相当于Haskell:
addElem :: a -> [a] -> [a]
addElem x xs = x : xs
addElem 3 (take 10 [1..])
=> [3,1,2,3,4,5,6,7,8,9,10]
在这里,这些功能不会永远挂起。概念是相同的:对于每个列表,功能都会起作用。