【发布时间】:2020-04-08 06:16:33
【问题描述】:
如何创建属于其他类型子集的类型?我想要一个只包含字母数字字符的字符串类型。
所以我想要这样的东西
type AlphNumString = [AlphaNumChar]
data AlphaNumChar = ???? filter (isAlphaNum) Char ????
【问题讨论】:
-
filter不是类型,而是函数。 -
@MarkSeemann,没错,过滤器是一个函数,而不是一个类型。我希望引导的是一种在某些条件下从其他类型派生类型的方法。
-
@Henk 遗憾的是,Haskell 没有办法真正简单地 做到这一点。聪明的构造函数是你能做的最好的。 (作为一个愚蠢的例子,想象一个只包含素数的
Int子类型。编译器怎么知道素数是什么?显然这必须在用户代码中发生......)