
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!

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
participants (2)
-
Alexander Chen
-
Mihai Maruseac