价值构造者的别名

时间:2018-03-27 15:25:08

标签: haskell types alias

是否可以为值构造函数定义别名?上下文是这样的:我正在编写一个程序,它将原始递归函数实现为图灵机。为此,我正在使用一元整数编码。我的图灵机类型定义如下:

data Symbol a = Symbol a | Blank | Delim | Final | One deriving (Eq, Ord)

我的符号类型定义如下:

One

我有Symbol 1作为方便,所以我不需要在任何地方写Symbol。但这有点不整洁。我想在alias One = Symbol 1 类型之外定义一个别名,比如

alias Zero = Blank

{{1}}

这样的事情可能吗?

1 个答案:

答案 0 :(得分:6)

{-# Language PatternSynonyms #-}

pattern Zero :: Symbol a
pattern Zero = Blank

pattern One :: (Eq a, Num a) => Symbol a
pattern One = Symbol 1

工作(双向模式同义词)