函数名称与haskell中的变量

t0m*_*ma5 0 syntax haskell

来自haskell文档:

标识符在词法上被区分为两个名称空间(第1.4节):以小写字母(变量标识符)开头的标识符和以大写字母开头的标识符(构造函数标识符).

所以包含常量值的变量,即a=4函数名称add add a b = a + b都是变量标识符,是吗?我们可以说函数名是可变的吗?

来自另一个学术来源:

f (patter1)...(pattern2) = expression
Run Code Online (Sandbox Code Playgroud)

..模式可以是构造函数或变量,而不是已定义的函数

这是我感到困惑的地方.正如我可以做的那样f g xg是一个函数,我再次看到函数名是一个变量.真正?他们对"未定义的定义函数"的含义是什么呢?

Ing*_*ngo 6

函数名称可以是变量标识符,除非它是类似的运算符+.

这是关于词汇问题的陈述.你无法从中推断出函数名是一个变量.(因为变量不是词汇的东西.)

这是另一种方式,比如

f . g = \a -> f (g a)
Run Code Online (Sandbox Code Playgroud)

where fg是变量,即绑定到某些未知的未知值的名称,但我们知道这些值必须是函数.