是否可以为值构造函数定义别名?上下文是这样的:我正在编写一个程序,它将原始递归函数实现为图灵机。为此,我正在使用一元整数编码。我的图灵机类型定义如下:
data Symbol a = Symbol a | Blank | Delim | Final | One deriving (Eq, Ord)
我的符号类型定义如下:
One
我有Symbol 1
作为方便,所以我不需要在任何地方写Symbol
。但这有点不整洁。我想在alias One = Symbol 1
类型之外定义一个别名,比如
alias Zero = Blank
和
{{1}}
这样的事情可能吗?
答案 0 :(得分:6)
{-# Language PatternSynonyms #-}
pattern Zero :: Symbol a
pattern Zero = Blank
pattern One :: (Eq a, Num a) => Symbol a
pattern One = Symbol 1
工作(双向模式同义词)