Haskell 如何定义像1这样的对象?
在haskellHaskell 如何定义像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 等等 不确定你到底想要达到什么,或者这只是一个玩具实验还是什么。但是我想这回答了我的问题。我只是好奇如
1::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
等等
不确定你到底想要达到什么,或者这只是一个玩具实验还是什么。但是我想这回答了我的问题。我只是好奇如何定义一个带有typeclass约束的对象而不使用这些对象。而且,如果我们使用
类MyNum a,其中fromString::String->a
我们可以写fromString“1”
,而这将有typeMyNum a=>a
。这实际上类似于类Num
中发生的情况,该类有一个方法fromInteger::Integer->a
,因此fromInteger(21::Integer)
具有有界的多类型。一般来说,对于某些类型类c
,要获得类似a
的内容,该typeclass必须有一个函数,a
处于正位置。1
不是一个对象1::Integer
、1::Int
、1::Double
等都是完全不同的值。