纯函数(Pure Function) 是一种,求值与运行时环境无关、传入相同参数时具有相同的输出、没有副作用的函数。
特别地,Chill 所定义的纯函数要求,在程序任何时刻均可用。
Chill 语言具有明确的编译期和运行期。通常的函数只能在运行期调用,纯函数则可以在编译期使用。
Chill 核心库 所附带的许多函数,都是纯函数。如:
(+ 5 6)
(not F)
(list 5 6 7)
纯函数可以使用如下定义方式:
(defunc add [a b]
(return (+ a b))
)
详细的定义方式,将在后续章节指出。
值得一提的是,纯函数与普通函数的定义方法相同。 一个函数是否为纯函数,会在编译期判明。
编译期的纯函数通常用于常量处理,类似于 C++11 的 constexpr function 。
常量(Constant) 是一种编译期确定的量。其值在定义后不会改变。
使用 define
来定义一个常量:
(define PI 3.14)
(define add +)
常量可以经过运算获得,但其运算过程所调用的函数必须为纯函数。
常量在计算中可以使用另一个已确定的常量。这个常量可以是任意的类型。
(define a (+ 5 6)) ; 11
(define b (- a 3)) ; 8
(define c (* a b)) ; 88
常量的运算可以使用自定义的纯函数。此处应用了 “纯函数任何时期可用” 的特性。
(defun add [a b] (return (+ a b)))
(define d (add 5 6)) ; 11