动态类型+面向对象 = shit

动态类型+面向对象 = shit

1.动态类型 

动态类型语言,属于看起来方便,用后麻烦的东西,我不喜欢它们。除非不需要考虑软件工程场合——如作为脚本语言。

动态类型+高阶函数,使得Scheme定义的op非常强大,如同酒驾的司机,非常狂野。

 

(define (op a b how-op)
( how-op a b) )

 

op可以对两个参数a,b进行“某种”how-op操作后返回一个值。然而,如果不看op的实现,应用程序员就不可能知道how-op应该是什么样的函数,也不知道op将返回什么结果。在当前实现下,应用程序员仅仅知道how-op有两个参数,how-op的返回值即op的返回值。

如果op实现如下

(define (op a b how-op)
  (and (how-op a) (how-op b) )  )

那么,应用程序员仅仅知道,how-op有一个参数,返回值为布尔值,op的返回值也为布尔值。可以应用如下:

(op 1 3 (lambda(x)(> x 0))) ;;
(op #t #t (lambda(x) x)) ;;;

Scheme定义的函数,应用程序员无法脱离实现而仅仅了解其接口,或者说,Scheme程序不可能遵循接口与实现分离。【也就是说,用户看到一个函数,理论上,需要了解函数的实现。这是讨厌的事情。

类似的Python语言,不可能出现针对接口进行抽象的、类似Java抽象方法或C++的纯虚函数的概念,也就不会有抽象类型。【因此,动态类型语言,在理论上就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值