(1)
In Haskell, functions are called by writing the function name, a space and then the parameters, separated by spaces.
Haskell
中函数调用不使用括号,使用空白符隔开函数名和参数:
> min 9 10
9
(2)
If a function takes two parameters, we can also call it as an infix function by surrounding it with backticks.
如果函数有两个参数,可以使用中缀表达法。但要注意“`”符号:
> 9 `min` 10
9
> 9 min 10
<interactive>:10:1:
Non type-variable argument
in the constraint: Num ((a -> a -> a) -> a -> t)
(Use FlexibleContexts to permit this)
When checking that ‘it’ has the inferred type
it :: forall a a1 t.
(Num a1, Num ((a -> a -> a) -> a1 -> t), Ord a) =>
t
(3)
Functions in Haskell don’t have to be in any particular order.
(4)
Side effects are essentially invisible inputs to, or outputs from, functions. In Haskell, the default is for functions to not have side effects: the result of a function depends only on the inputs that we explicitly provide. We call these functions pure; functions with side effects are impure.
If a function has side effects, we can tell by reading its type signature—the type of the function’s result will begin with IO:
ghci> :type readFile
readFile :: FilePath -> IO String
Haskell’s type system prevents us from accidentally mixing pure and impure code.
(5)
Haskell doesn’t have a return keyword, because a function is a single expression, not a sequence of statements. The value of the expression is the result of the function.