+ 设为首页 + 加入收藏

 
 
Haskell的Typeclass怎么理解
V字仇杀队这部电影怎么样
Skype在中国的市场如何
C语言如何调用硬件
熬夜或通宵之后是什么感
LoveLive中的Live是读作liv还
     西安港汇实业有限公司

销售热线:张经理: 15191895022
     白经理: 18109296883
QQ:2355807252 2355807260
技术热线:15191895022
传真:029-86189022 4006388838转00685

 
当前位置:主页 > 产品展示 >
Haskell的Typeclass怎么理解
发布者:知乎 发布时间:2020-05-17 14:12:03 阅读:776次 
摘要:如果从工程的角度来看,的解决了以下几类问题、类型推导如何兼容重载函数、定义语言所缺失的(如的和的,事实上任何时候的都不应该是一个接口,因
如果从工程的角度来看,Haskell的typeclass解决了以下几类问题1、类型推导如何兼容重载函数2、定义OO语言所缺失的concept/*mapping*/(如C#的IComparable<T>和Haskell的Sort,事实上任何时候C#的IComparable<T>都不应该是一个接口,因为每个类型只会实现一次,所以他应该是concept,对于任何T应该是静态的,然而OO的语言就是对这些东西有着微妙的敌意)。C++的模板的一些奇葩的功能替代了concept,然而一旦程序写错了,错误信息特别糟糕,所以他们还正在试图发明一次concept。3、算法的扩展。之前谁的一篇文章讲到了类型的两种扩展。第一种扩展是针对函数扩展,你有一些固定的类型,你可以不断的写新的函数来在运行的时候动态重载他们,就像Visitor模式干的一样。第二种是针对类型的扩展,这个就是大家熟悉的虚函数,你先定义好一系列的函数,于是你就可以无限的扩展新的类型来实现这些函数。Haskell干的就倾向于第一种,没有办法做第二种,因为他的data声明是封闭的,而typeclass的instance是开放的。其中固定的类型指的就是data的各种构造函数。F#也有类似的功能,你们可以把Haskell的data和typeclass翻译过去,然后编译出来之后,反编译成C#,就什么都明白了。
下一篇:没有了
相关文章
友情链接:
Copyright © 2010-2013 www.gongyezidonghua.com All Rights Reserved. 版权所有 西安港汇实业
地址:西安市未央区大明宫万达广场2号甲写1408 电话:029-86189022 传真:4006358835-00685
陕ICP备13005737号 网站地图