【发布时间】:2017-06-03 23:47:09
【问题描述】:
我不知道如何准确地表达这个,所以如果有人有一个好名字,请告诉我。
我正在尝试编写一个名为Matchable 的类型类。这个想法是我拥有的几种不同类型的正则表达式(RegExp a、ComplexRegex a)应该能够匹配输入。
所以我尝试了这个:
class Matchable a where
-- regex, input, success
match :: a -> b -> Bool
但我真正想要的是用类型构造函数变量或其他东西解构类型类中的构造函数:
class Matchable a where
-- regex, input, success
match :: (B a) -> [a] -> Bool
这样我就可以在String 上匹配RegExp Char 和ComplexRegex Char。有没有办法做到这一点?谢谢。
【问题讨论】:
-
不完全清楚你想要什么。您能否为您想要抽象的
match的不同情况提供一些类型签名?例如matchRegExp :: RegExp Char -> [Char] -> Bool、matchComplexReg :: ComplexRegex ...等 -
您可能需要关联类型(较新、更详细)或fundeps(较旧、更简洁),但如果没有实际代码就很难说
-
@jberryman 和 haoformayor 看到 Alec 的回答——差不多就是这样