[Haskell-beginners] I have a question in designing a 'show' function

mukesh tiwari mukeshtiwari.iiitm at gmail.com
Wed Apr 4 06:51:43 UTC 2018


Add one more constraint that a is member of Floating type class and change
your + to ++

" " + show(pi * x * x



showAreaOfCircle :: (Floating a, Show a) => a -> String
showAreaOfCircle x = "The area of a circle with radius" ++ show x ++ "is
about" ++ " " ++ show (pi * x * x) ++ "cm^2"

*Tmp> showAreaOfCircle 10
"The area of a circle with radius10.0is about 314.1592653589793cm^2"
*Tmp> :t showAreaOfCircle 10
showAreaOfCircle 10 :: String
*Tmp> :t showAreaOfCircle
showAreaOfCircle :: (Show a, Floating a) => a -> String
*Tmp> :t showAreaOfCircle 10.12
showAreaOfCircle 10.12 :: String
*Tmp> showAreaOfCircle 10.12
"The area of a circle with radius10.12is about 321.74432666180644cm^2"
*Tmp>

Best,
Mukesh


On Wed, Apr 4, 2018 at 4:37 PM, 清羽 <1625143974 at qq.com> wrote:

>
> here is the question:
>
> Write a function showAreaOfCircle which, given the radius of a circle,
> calculates the area of the circle,
>
> <code>showAreaOfCircle 12.3</code>  ⇒ <code>"The area of a circle with radius 12.3cm is about 475.2915525615999 cm^2"</code>
>
> my solution is:
>
> showAreaOfCircle :: Show a => a -> String
> showAreaOfCircle x = "The area of a circle with radius" ++ show x ++ "is about" ++ " " + show(pi * x * x) ++ "cm^2"
>
> but there is an error
>
> • Could not deduce (Num a) arising from a use of ‘*’
> from the context: Show a
> bound by the type signature for:
> showAreaOfCircle :: forall a. Show a => a -> String
> at FirstStep.hs:20:1-41
> Possible fix:
> add (Num a) to the context of
> the type signature for:
> showAreaOfCircle :: forall a. Show a => a -> String
> • In the first argument of ‘show’, namely ‘(pi * x * x)’
> In the second argument of ‘(+)’, namely ‘show (pi * x * x)’
> In the second argument of ‘(++)’, namely ‘" " + show (pi * x * x)’
>
> I had tried to change the type declaration to
>
> Show a => Num a => a -> String
>
> i guess there must be a problem with pi.
>
> Can someone help me with the error message? Great thanks
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20180404/ae18ab08/attachment.html>


More information about the Beginners mailing list