编写模式同义词

时间:2016-06-17 21:07:38

标签: haskell

在我的旅行过程中,我写了这个模式同义词:

pattern ConsK :: a -> D k (StreamK k a) -> StreamK k a
pattern ConsK x xs <- StreamK (Cons x ((UnsafeD . StreamK) -> xs)) where
    ConsK x (UnsafeD (StreamK xs)) = StreamK (Cons x xs)

最后一行捕获此模式同义词的意图:虚拟构造函数ConsK包装(使用StreamK)并解包(xs)其参数。当我在这个构造函数上进行模式匹配时,我只想让包装操作解包,并且需要包装的解包操作。

不幸的是,据我所知,我必须编写一个非常难看的ViewPatterns ed模式同义词。有没有办法更好地写这个?

0 个答案:

没有答案