我正在学习Haskell,并希望在一些构造函数中强制使用正整数(1,2,3,...),但我似乎只能找到'Int'和'Integer'数据类型.
我可以使用规范
data Nat = Zero | Succ Nat
Run Code Online (Sandbox Code Playgroud)
但后来我不能用1,4,......来表示它们.
所以我问,有没有办法实现这个目标?(就像在C中使用'unsigned')
提前致谢.
编辑:正如CA McCann所解释的那样,我将把它隐藏在一个模块中.另外,我必须添加以下链接: http: //haskell.org/haskellwiki/Smart_constructors以获取有关该主题的摘要.感谢您抽出宝贵时间回答!
Haskell新手在这里.
我为一个最小的类汇编语言写了一个评估器.
现在,我想扩展该语言以支持一些语法糖,然后我将编译回来仅使用原始运算符.意思是我不想再次触及评估模块.
我认为,在OO的做事方式中,可以扩展原始模块以支持语法糖操作符,在此提供翻译规则.
除此之外,我只能考虑重写两个模块中的数据类型构造函数,以便它们不会发生名称冲突,并从那里继续,好像它们是完全不同的东西,但这意味着一些冗余,因为我必须重复(仅与其他名称)共同的运营商.同样,我认为这里的关键字是extend.
有没有一种功能性的方法来实现这一目标?
感谢您抽出宝贵时间阅读此问题.