我如何在Haskell中创建运算符? [英] How do I create an operator in Haskell?
本文介绍了我如何在Haskell中创建运算符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
制作一个三元逻辑表,我想为我称之为< =>
的操作符创建自己的函数。
所以,例如,我想这样做,但这是不对的。什么是正确的做法?
数据Ternary = T | F | M
导出(Eq,Show,Ord)
=> = ::三元 - >三元 - >三元
< => T F = F
< => T T = T
< => T M = M
= F F = T
< => F T = F
< => F M = M
< => M F = M
< => M T = M
< => MM = T
解决方案
/ p>
(< =>):: Ternary - >三元 - > (=)TF = F
(=)TT = T
(=)TM = M
(< => = =)F F = F
(=)FM = M
(=)MF = M $ b = b $ b(=>)MT = M
(=>)MM = T
这将它从中缀形式转换为前缀形式。或者,您可以在定义中使用中缀:
(< =>):: Ternary - >三元 - >三元
T => F = F
T => T = T
T => M = M
F< => F = T
F< => T = F
F< => M = M
M => F = M
M => T = M
M => M = T
Making a ternary logic table, and I would like to make my own function for an operator that I'll call <=>
.
So, for example, I want to do this, but that isn't right. what's the correct way to do this?
data Ternary = T | F | M
deriving (Eq, Show, Ord)
<=> :: Ternary -> Ternary -> Ternary
<=> T F = F
<=> T T = T
<=> T M = M
<=> F F = T
<=> F T = F
<=> F M = M
<=> M F = M
<=> M T = M
<=> M M = T
解决方案
Just add parentheses around your operator:
(<=>) :: Ternary -> Ternary -> Ternary
(<=>) T F = F
(<=>) T T = T
(<=>) T M = M
(<=>) F F = T
(<=>) F T = F
(<=>) F M = M
(<=>) M F = M
(<=>) M T = M
(<=>) M M = T
This turns it from infix form to prefix form. Alternatively, you can just use infix in the definition:
(<=>) :: Ternary -> Ternary -> Ternary
T <=> F = F
T <=> T = T
T <=> M = M
F <=> F = T
F <=> T = F
F <=> M = M
M <=> F = M
M <=> T = M
M <=> M = T
这篇关于我如何在Haskell中创建运算符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文