如何定义作为数字列表的新数据类型?

Max*_*Max 0 haskell

我是一个完整的Haskell n00b,但我想定义一个简单的数字列表的新数据类型.我该怎么做呢?我已经在类型声明以及其他在线资源上阅读了Haskell wikibook,但我似乎无法弄明白.从本质上讲,这是我尝试过的:

type NumList = [Num]
Run Code Online (Sandbox Code Playgroud)

这没用,所以我怎么能这样做?谢谢您的帮助.

Dan*_*ner 6

Num是一个类,而不是一个类.选择一种类型; 例如Integer或者Rational可能是不错的选择.

type NumList = [Integer]
Run Code Online (Sandbox Code Playgroud)

但是,这并不能创建一个新的类型; 它只是为旧类型创建一个新名称.如果你真的想要一个新类型,你可以使用newtype,如

newtype NumList = MkNumList [Integer]
Run Code Online (Sandbox Code Playgroud)

它定义了一个名为的新类型NumList和一个名为的新数据构造函数MkNumList.

  • @Max执行此操作的常用方法是使用`newtype NumList a = [a]`然后只需要`Num a`来表示所有函数.否则你可以真正看中GADT,但这太过分了. (2认同)