![](/wp-content/uploads/2022/03/image-13.png)
![](/wp-content/uploads/2022/03/image-14.png)
![](/wp-content/uploads/2022/03/image-15.png)
![](/wp-content/uploads/2022/03/image-16.png)
调用函数的时候用的是位置,定义函数的时候用的是变量去访问
![](/wp-content/uploads/2022/03/image-18.png)
创建mytype类型和生成3个constructor,利用这个constructor会的得到myType类型
![](/wp-content/uploads/2022/03/image-17.png)
![](/wp-content/uploads/2022/03/image-19.png)
![](/wp-content/uploads/2022/03/image-20.png)
![](/wp-content/uploads/2022/03/image-21.png)
![](/wp-content/uploads/2022/03/image-22.png)
![](/wp-content/uploads/2022/03/image-23.png)
![](/wp-content/uploads/2022/03/image-24.png)
![](/wp-content/uploads/2022/03/image-25.png)
![](/wp-content/uploads/2022/03/image-26.png)
没有携带数据的constructor不会为作用域增加新数据,但他还是会到对应的分支执行他
![](/wp-content/uploads/2022/03/image-27.png)
多态datatype
![](/wp-content/uploads/2022/03/image-29.png)
![](/wp-content/uploads/2022/03/image-28.png)
除了one of type可以用case expression,each of type也可以用这种方式访问
![](/wp-content/uploads/2022/03/image-31.png)
事实上,值绑定也是一种case expression,并且只有一种case expression
![](/wp-content/uploads/2022/03/image-30.png)
![](/wp-content/uploads/2022/03/image-32.png)
实际上函数的传参也是这样,所以还可以优化前面的例子
![](/wp-content/uploads/2022/03/image-33.png)
因为可以直接返回tuple,所以还可以直接将返回值直接传给另一个函数,只要这个函数的参数match这个tuple
![](/wp-content/uploads/2022/03/image-34.png)
嵌套模式,规避每个情况的判空,而是直接可能拿到嵌套的情况去计算,其余情况可以为空
匹配tuple直接去单个单个的判断他们
通配符去匹配其他情况可以减少代码
![](/wp-content/uploads/2022/03/image-35.png)
Function Patterns
![](/wp-content/uploads/2022/03/image-36.png)
![](/wp-content/uploads/2022/03/image-37.png)
![](/wp-content/uploads/2022/03/image-38.png)
![](/wp-content/uploads/2022/03/image-40.png)
![](/wp-content/uploads/2022/03/image-39.png)
![](/wp-content/uploads/2022/03/image-41.png)
符合尾递归的条件是在递归函数时,只是仅仅返回值,而不是调用完函数还有一些副作用操作,如果是仅仅返回值,那么被调用的函数就会替换掉当前的栈,而不是展开多个栈