Results 12 comments of ant

P82页 data Cm = Cm Double x = Cm 3 涉及到Cm盒子,Double盒子,Double#三个盒子,其中前二个盒子都包含了undefined的能力,Double#则不包含undefined的能力 ------------------------------------------------ newtype Inch = Inch Double y=Inch 4 涉及到Inch盒子,Double#二个盒子,其中前一个盒子也包含了undefined的能力,Double#则不包含undefined的能力 书上解释,y减少了一次Double的打包和解包的过程。 ???而我奇怪的则是:之所以要打包,就是为了解决 bottom ,以扩展Double#,Int#等包含undefined这种能力。 可现在通过newtype,却又取消了这种能力,岂非矛盾? 还是说,在这个例子中,Inch这个盒子的 bottom,,会与Double盒子上的bottom重叠,如此一来,Double就多余了?

newtype的引入既然是为了避免运行时额外的boxing/unboxing,但newtype规定只能是单构造单参数的类型。感觉好像是说 单构造函数单参数的newtype才可以避免一次boxing/unboxing了?多构造函数或多参数,haskell就无法实现boxing/unboxing?