
Hi.
Num is not a superclass of Int. Int is a type whereas Num is a type of a type.
The fix would be
sigmund :: Num a => a -> a
...
This signature means "sigmund has type a to a where a is constrained
to be a type variable of type Num" (so Num is the type of the type
variable a)
On Wed, Apr 29, 2020 at 12:41 PM Alexander Chen
Hi,
superclass.hs
myX = 1 :: Int
sigmund :: Int -> Int sigmund x = myX
prelude> :l superclass.hs [1 of 1] Compiling Main Ok, one module loaded.
==================================================================================
superclass.hs
myX = 1 :: Int
sigmund :: Num -> Num sigmund x = myX
prelude> :l superclass.hs typed_checked.hs:3:13: error: • Expecting one more argument to ‘Num’ Expected a type, but ‘Num’ has kind ‘* -> Constraint’ • In the type signature: sigmund :: Num -> Num | 3 | sigmund :: Num -> Num | ^^^
typed_checked.hs:3:20: error: • Expecting one more argument to ‘Num’ Expected a type, but ‘Num’ has kind ‘* -> Constraint’ • In the type signature: sigmund :: Num -> Num
===================================================================================
I would think since Num is a superclass of Int defining the type in the superclass would be OK, also in the error message it refers to (see black) what does that refer to?
thanks!
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Mihai Maruseac (MM) "If you can't solve a problem, then there's an easier problem you can solve: find it." -- George Polya