Skip to content

Latest commit

 

History

History
61 lines (40 loc) · 1.49 KB

3.纯函数与常量.md

File metadata and controls

61 lines (40 loc) · 1.49 KB

纯函数 与 常量

纯函数

纯函数(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