ML之第三周总结(四)useful datatypes

昨天晚上复习Racket第二周的第一节课,发现需要先复习一下useful datatypes这一节课。

之前datatypes的例子绝大多数都是silly的。

最简单的例子,就是用datatypes来构建枚举类型(enumeration)。例如可以使用datatypes来描述扑克牌。每张扑克牌分为两部分,一个是花色,一个是牌面大小。

datatype suit = Club | Diamond | Heart | Spade

datatype rank = Jack | Queen | King | Ace | Num of int

接下来提到了一个不太好的代码风格,就是很多值用int类型表示。对于学生而言,有些同学没有学号(例如被开除之类的)。不太好的风格会使用-1等值来表示。而比较好的风格是使用int option。


ML之第三周总结(四)useful datatypes_第1张图片
bad style
ML之第三周总结(四)useful datatypes_第2张图片
good style

接下来讲的是recursive datatypes。

datatype exp = Constant of int

                       | Negate of exp

                       | Add of exp * exp

                       | Multiply of exp * exp


ML之第三周总结(四)useful datatypes_第3张图片

fun eval e = 

    case e of

        Constant i => i

         | Negate e1 =>~(eval e1)

         | Add(e1, e2) => (evale1) + (eval e2)

         | Multiply(e1, e2) => (eval e1) * (eval e2)

你可能感兴趣的:(ML之第三周总结(四)useful datatypes)