如何打造“函数式”编程语言
1个回答
2016-05-22
展开全部
严格的函数式语言是没有变量的赋值行为,讲究的是引用透明性,也就是说一个表达式返回一个值,那么它永远返回一个值,不会变。
函数式语言常常和递归联系起来,这是因为一般的循环结构,除非 while(1) 这种死循环,都是和表达式的变动关联起来的,比如说 while(n) 就是要不断修改 n 的值直到 n == 0,在函数式语言中是必须避免的。
递归通过调用函数的参数不同,来达到数据的变动却不破坏引用透明性。并且如果加入尾递归优化,那么递归的性能和循环是等价的。
函数式语言另外一个特点,也是一个语言能自称函数式的关键所在是,函数是“一等公民”,这是说能像操作数据一样在函数中动态生成新的函数,可以将函数赋值给变量,可以把函数放到数据结构里,可以把函数作为参数和返回值。
达到这一个特性的语言都可以宽泛的称作函数式编程语言,并不和过程式和面向对象冲突。
函数式语言常常和递归联系起来,这是因为一般的循环结构,除非 while(1) 这种死循环,都是和表达式的变动关联起来的,比如说 while(n) 就是要不断修改 n 的值直到 n == 0,在函数式语言中是必须避免的。
递归通过调用函数的参数不同,来达到数据的变动却不破坏引用透明性。并且如果加入尾递归优化,那么递归的性能和循环是等价的。
函数式语言另外一个特点,也是一个语言能自称函数式的关键所在是,函数是“一等公民”,这是说能像操作数据一样在函数中动态生成新的函数,可以将函数赋值给变量,可以把函数放到数据结构里,可以把函数作为参数和返回值。
达到这一个特性的语言都可以宽泛的称作函数式编程语言,并不和过程式和面向对象冲突。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询