惰性求值 编辑
程式语言理论中,惰性求值,又译为惰性计算、懒惰求值,也称为传需求调用,是一个计算机编程中的一个概念,目的是要最小化计算机要做的工作。惰性计算的最重要的好处是它可以在空间复杂度上得到极大的优化,从而可以轻易构造一个无限大的数据类型
1
相关
Haskell是一种标准化的,通用的纯函数式编程语言,有惰性求值和强类型系统类型。它的命名源自美国逻辑学家哈斯凯尔·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是头等物件”。作为一门函数程式语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以Λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”作为自己的标志。Haskell具有“柯里-霍华德同构”的特征。
协程是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、惰性求值和管道。
LispKit Lisp是LISP语言的严格函数式子集,它是作为函数式编程概念的测试台而开发的。它首先使用了对惰性求值的早期经验。在1980年开发者Peter Henderson,出版了用一种变体ALGOL语言写的基于SECD抽象机的实现。编译器和虚拟机都是高度可移植的,并已经在多种机器上实现。
Haskell是一种标准化的,通用的纯函数式编程语言,有惰性求值和强类型系统类型。它的命名源自美国逻辑学家哈斯凯尔·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是头等物件”。作为一门函数程式语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以Λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”作为自己的标志。Haskell具有“柯里-霍华德同构”的特征。
KRC是一种惰性求值的纯函数式编程编程语言,由David Turner在1979年11月至1981年10月期间开发,基于了SASL,具有模式匹配、卫语句和列表推导式。KRC有两种主要实现:David Turner的最初实现用BCPL写成并运行于EMAS,Simon J. Croft的后来实现用C语言写成并运行于Unix。KRC在1982年至1985年期间是在坎特伯雷的肯特大学用于教授函数式编程的主要语言。
协程是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、惰性求值和管道。
协程是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、惰性求值和管道。
协程是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、惰性求值和管道。
主动修改是计算机编程中,在一项的值变化时,其依赖项的值随之变化的行为模式。与惰性求值相对。
Miranda,是一种惰性求值的纯函数式编程编程语言,由英国学者大卫·特纳所设计。采用来自ML语言与Hope语言的概念,他用此来作为他先前所设计的SASL与肯特递归计算器语言的后继者。这个程式语言由英国的研究软件公司出品,这间公司拥有这个程式语言的商标权。