zio的编程风格以及思维浅谈
- 当然是函数式编程
- match pattern (匹配模式)
- 递归模式
思维浅谈
2与3一旦组合,我们能发现其实是以位为核心,这种位应当类似于波函数中的振幅,而波的传导,便是不同振幅的组合,这恰好符合function composition的自然特性。 若依热力学的变化来看,便是傅里叶变换。若依线代数学来描述,则是A = X1A1 + X2A2 + X3A3 + ...... + XnAn;
递归,则是同一频率波的不同振幅; 匹配,则是频率和相位都不听相同的波; 而函数式的作用在于输入与输出的映射关系,保持了一种稳定性 用数学的观念来说,就是可以构建起线性关系,或者说是向量。 一旦可以这样,便能应用到更多的数学知识,比如范畴论。 当然这也必须依赖Type(kind)在中间做支撑, 这样的优势是,我们可以抽象出更具有普遍性的数据处理方式。 譬如 Monoid Monad Applicative Functor Product/Sum(以数据构成关系论) 还有对effect(IO的优化 异常处理) 也能进行更好的隔离和处理
zio的结构
zio定义了三个泛型变量,R,E,A 。其定义大抵如下:
{{{ R => Either[E, A] }}}
入参R 返回一个Either结果,要么Eroor 要么Answer
zio的子类
zio的子类就是我们所谓的振幅 zio犹如unit 而子类S便如 S = x * unit. zio的子类有24种之多
zio的辅助类
在zio的company object中 定义了许多的final class class中带有apply方法 乃是函数的一种wrap