Mar*_*las 7 theory haskell algebraic-data-types
我正在阅读/听取Chris Taylor关于代数数据类型的演讲.
http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
还有一个关于函数类型的部分.特别是这个例子
data Bool = True | False
data Trio = First | Second | Third
Run Code Online (Sandbox Code Playgroud)
鉴于法律
a -> b == B^A
Run Code Online (Sandbox Code Playgroud)
特定
Trio -> Bool should equal 8
Run Code Online (Sandbox Code Playgroud)
通过乘法为什么8而不是6?
如果我正确理解这一点,那么具体的组合应该是
First -> True
First -> False
Second -> True
Second -> False
Third -> True
Third -> False
Run Code Online (Sandbox Code Playgroud)
这不仅仅是6个具体的实现Trio -> Bool
吗?
我错过了什么?
Dav*_*vid 18
那些不是完整的实现.对于完整的实现,它类似于从二进制计数从0到7(总共8 = 2 3个数字),每个实现的每一行代表三个位中的一个.所有可能性都是这样(如果我们调用我们的函数f
):
1)
f First = False
f Second = False
f Third = False
Run Code Online (Sandbox Code Playgroud)
2)
f First = True
f Second = False
f Third = False
Run Code Online (Sandbox Code Playgroud)
3)
f First = False
f Second = True
f Third = False
Run Code Online (Sandbox Code Playgroud)
4)
f First = True
f Second = True
f Third = False
Run Code Online (Sandbox Code Playgroud)
5)
f First = False
f Second = False
f Third = True
Run Code Online (Sandbox Code Playgroud)
6)
f First = True
f Second = False
f Third = True
Run Code Online (Sandbox Code Playgroud)
7)
f First = False
f Second = True
f Third = True
Run Code Online (Sandbox Code Playgroud)
8)
f First = True
f Second = True
f Third = True
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
142 次 |
最近记录: |