`
cookoo
  • 浏览: 648286 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

天生一对

    博客分类:
  • FP
阅读更多
Born to be together,这句也是Apple以前iTune和iPod的广告词。不过这里是用来比喻两个语言特性:类型推断和命名参数。

自ML诞生的类型推断技术似乎随着C#3的宣传日渐进入主流视野,一些新语言如D,Scala也实现了所谓“局部类型推断”(只简化声明,但不推断函数接口)。类型推断简化了大量不必要的类型声明,使代码获得动态脚本语言一样的感观,同时有获得编译期的类型检查和运行时的性能。不过在可读性上或多或少有点影响,有几种解决办法:
1)添加注释,以后注释和代码的同步维护负担重,不理想。
2)添加类型声明,像Haskell那样,繁琐。当然显式类型声明有时是用来约束更紧的类型。
3)更具说明性的参数命名+命名参数,这也是为什么动态语言没有类型声明也不会感觉不可读的问题,甚至比静态语言在调用函数的时候更可读。某种程度上VB发明的匈牙利命名法也不失为一种增进动态语言可读性的办法。

命名参数有如下好处:
-不用再硬记参数顺序了,没有IDE提示也能过日子
-相当于调用时的参数描述文档
-一般支持命名参数的语言都会支持可选参数(这两个也是天生一对),可选参数的意义不仅是简化函数调用,而且让参数API可扩展又不影响已有代码。可选参数还消灭了方法重载(overload)的必要。

埃,这么多好处,没有命名参数的语言真是没法活了。

说道命名参数的实现,一般分两类:一种是语法级实现如Python,Ocaml;一种是用hash/record或某种复合数据结构模拟,如Ruby和Haskell。
分享到:
评论
4 楼 cookoo 2007-06-25  
相等问题:因为OO中大量的sub typing这个问题确实挺难,但并非不可解决, 只不过推断出的类型可能过于宽泛有时还得显式约束一下。F#的OO模型完全和C#等价,事实上.Net上的泛型还是F#首先实现的。还有更多的例子,如Haskell衍生OO版本O'Haskell和彻底OO的flash语言Haxe。

命名参数我是从可读性角度考虑的,你可以看看wxHaskell的接口就是用record的风格。否则一个窗口控件属性一堆,每次生成不管有的没的都要把属性参数输入一遍实在难以想象。当然这是风格问题,不是语言强制的,虽然我认为是个好风格。
3 楼 Lich_Ray 2007-06-25  
引用
Ocaml和F#...

注意我的原话“无法和基于命令式风格的面向对象范式共存”——它们中有 class,但其实用的是保护性质的(函数式风格的)一种类型组织手段;静态类型推断无法和基于命令式风格的面向对象范式共存的重要原因在于不能正确处理相等这个问题,而在函数式语言中这不是个问题。
apply()该过之后感觉在语言自足性上有问题;Haskell 这么嚣张,但在这个问题上还是没有越雷池一步,很明智。
2 楼 cookoo 2007-06-25  
不会吧,Ocaml和F#都说明type inference和OO是可以共存的。至于apply(),如果是第二种即用hash/dict来实现命名参数的就可以使用啊,甚至在已经有内建语法的Python和Ocaml里也能这么干,当然风格受点影响。
1 楼 Lich_Ray 2007-06-25  
静态类型推断无法和基于命令式风格的面向对象范式共存。在 D 中加入类型推断纯属乱弹琴。
PS: 命名参数不是终极解决方案,至少无法和 apply() 共存。可能,语言设计者们参数指定手段方面考虑的还不够。

相关推荐

    区块链VS供应链,天生一对(2021)(33页).pdf

    区块链VS供应链,天生一对(2021)(33页).pdf

    天生一对.doc

    《天生一对》是一个充满趣味和教育意义的故事,旨在引导孩子们理解和欣赏差异中的和谐,以及不同个体间的互补关系。这个故事通过长颈鹿和鳄鱼这两个看似完全不搭界的动物角色,展示了他们如何成为彼此生活中的“天生...

    天生一对——邂逅情人节ppt模板.rar

    "天生一对——邂逅情人节ppt模板.rar" 提供的是一份特别设计的情人节主题PPT模板,它融合了创新与趣味元素,旨在帮助用户快速创建出吸引人的情人节展示。这份模板可能包含了一系列精心设计的幻灯片布局、色彩搭配、...

    天生一对-邂逅情人节PPT模板.pptx

    【天生一对-邂逅情人节PPT模板】是一个专为情人节设计的PPT模板,它将浪漫与创意结合,为情侣们提供了一个展示情感、表达爱意的独特方式。在这个模板中,设计者通过巧妙的排版和温馨的语句,营造出一种“天生一对”...

    天生一对经典台词翻译.doc

    【天生一对经典台词翻译.doc】这个文件显然包含了电影《天生一对》中的一些经典对白,这部电影讲述了两个在不同环境中成长的双胞胎女孩 Hallie 和 Annie 的故事,她们偶然相遇并决定互换身份,体验彼此的生活。...

    中班上学期音乐教案《天生一对》含反思.doc

    在中班上学期的音乐教育活动中,我们引入了以《天生一对》为主题的教案,旨在培养孩子们的社交情感,尤其是在与朋友之间的亲昵与友好关系。活动的设计巧妙地融合了绘本故事和音乐元素,让孩子在音乐的陪伴下体验合作...

    天生一对:大数据分析与云技术结合

    标题“天生一对:大数据分析与云技术结合”形象地表达了大数据分析与云技术之间的密切关系及其在现代信息技术领域中的重要作用。通过将两者相结合,可以更高效地处理、存储和分析海量数据,为企业决策提供强有力的...

    区块链VS供应链,天生一对.pdf

    区块链VS供应链,天生一对.pdf

    新能源汽车与车联网:天生一对.pdf

    新能源汽车与车联网:天生一对.pdf

    区块链行业:区块链VS供应链,天生一对.rar

    区块链行业:区块链VS供应链,天生一对

    大班优质语言教案《天生一对》润新教育.txt

    大班优质语言教案《天生一对》润新教育.txt

    Word模板-信纸新天生一对(蓝).wpt

    Word模板-信纸新天生一对(蓝).wpt

    《天生一对》绘本故事PPT模板

    《天生一对》绘本故事PPT 鳄鱼和长颈鹿是一对爱人,他们真心相爱。虽然长颈鹿那么高大,鳄鱼这么矮小,但是他们住在非常特别的房子里,不用担心高矮的问题。 这一天,他们挂在树上,感觉真好,但是时间久了,他们又...

    variabless:JS&CSS-天生一对:gem_stone:

    Variabless允许您以单一的真实来源来管理应用程序范围CSS样式和变量。 Variabless会将JS定义文件转换为CSS变量或类,从而允许您在JS和CSS文件中使用这些值。为什么使用变量? 自从引入CSS变量以来,在您的应用程序中...

    juv-rtmp-client-1.5.12

    Adboe的Red5流媒体服务器免费并且是开源的,与Flash搭配的时候可谓是天生一对,但使用Java和Android作为客户端调用却可谓一波三折。 国外一个收费的RTMPClient,官网售价是395$。http://smaxe.com,很多人肯定找过...

    店铺活动520满妆爱5.19.doc

    此活动特别推出了“天生一对”组合,购买无暇BB霜后,再购买芦荟胶可享受半价优惠。不过,这个活动与其他店铺内的优惠不叠加,顾客需选择套餐购买以享受此优惠。 综上所述,"520满妆爱"活动是婷美化妆品旗舰店为...

    处女座星座配对指数.docx

    2. **处女座 vs 金牛座**:配对评分100,天生一对。金牛座的稳重和耐心能够弥补处女座的紧张,两者在一起能够相互放松,享受宁静的生活。 3. **处女座 vs 双子座**:配对评分50,需要努力。处女座的谨慎和双子座的...

    结婚祝福语成语精选精选.doc

    29. "天作之合,佳偶天成":强调他们的结合是天意注定,天生一对。 以上只是其中一部分成语的解释,文档中包含了更多这样的祝福语,每一条都富含中国传统文化的韵味,适合在婚礼上或送礼时使用,以表达最真挚的祝福...

    关于结婚的贺词.doc

    10. **适应变化**:“在这春暖花开、群芳吐艳的日子里,你俩永结同好,正所谓天生一对、地生一双!”IT行业变化快速,需要像适应生活变化一样,灵活应对技术变革。 11. **持续进步**:“愿你俩用爱去绾着对方,彼此...

    【重磅】区块链技术及行业应用资料合集(40份).zip

    2020《区块链VS供应链,天生一对》 2020工业区块链应用白皮书 2020广播电视和网络视听区块链技术应用白皮书 2020杭州市区块链产业白皮书 2020江苏省区块链产业发展报告 2020能源石化交易行业区块链应用白皮书 2020年...

Global site tag (gtag.js) - Google Analytics