Haskell 如何定义像1这样的对象?

Haskell 如何定义像1这样的对象?,haskell,Haskell,在haskell1::Num a=>a中 我如何(如果以任何方式)复制这种行为,即。 定义一个typeclassMyNum,(可能是类型和实例) 以及一个对象One,它是 键入One::MyNum a=>a class MyNum a where one :: a 现在one::MyNum a=>a。然后你就可以写了 instance MyNum Int where one = 1 等等 不确定你到底想要达到什么,或者这只是一个玩具实验还是什么。但是我想这回答了我的问题。我只是好奇如

在haskell
1::Num a=>a

我如何(如果以任何方式)复制这种行为,即。 定义一个typeclass
MyNum
,(可能是类型和实例) 以及一个对象
One
,它是 键入
One::MyNum a=>a

class MyNum a where
  one :: a
现在
one::MyNum a=>a
。然后你就可以写了

instance MyNum Int where
  one = 1
等等


不确定你到底想要达到什么,或者这只是一个玩具实验还是什么。但是我想这回答了我的问题。

我只是好奇如何定义一个带有typeclass约束的对象而不使用这些对象。而且,如果我们使用
类MyNum a,其中fromString::String->a
我们可以写
fromString“1”
,而这将有type
MyNum a=>a
。这实际上类似于类
Num
中发生的情况,该类有一个方法
fromInteger::Integer->a
,因此
fromInteger(21::Integer)
具有有界的多类型。一般来说,对于某些类型类
c
,要获得类似
a
的内容,该typeclass必须有一个函数,
a
处于正位置。
1
不是一个对象
1::Integer
1::Int
1::Double
等都是完全不同的值。