Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. I have a question in designing a 'show' function (=?utf-8?B?5riF5769?=) 2. Re: I have a question in designing a 'show' function (mukesh tiwari) 3. Re: I have a question in designing a 'show' function (Joel Neely) ---------------------------------------------------------------------- Message: 1 Date: Wed, 4 Apr 2018 14:37:13 +0800 From: "=?utf-8?B?5riF5769?=" <1625143...@qq.com> To: "=?utf-8?B?YmVnaW5uZXJz?=" <beginners@haskell.org> Subject: [Haskell-beginners] I have a question in designing a 'show' function Message-ID: <tencent_75099456b5378b55e7348165fac596ffa...@qq.com> Content-Type: text/plain; charset="utf-8" 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20180404/d6bdacfa/attachment-0001.html> ------------------------------ Message: 2 Date: Wed, 4 Apr 2018 16:51:43 +1000 From: mukesh tiwari <mukeshtiwari.ii...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] I have a question in designing a 'show' function Message-ID: <CAFHZvE8avVDCNAbiSAPCK4e2=jh78xcj-20ufgrefrigwsu...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" 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, 清羽 <1625143...@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@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-0001.html> ------------------------------ Message: 3 Date: Wed, 4 Apr 2018 06:19:11 -0500 From: Joel Neely <joel.ne...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] I have a question in designing a 'show' function Message-ID: <caeezxajv7itb8cnejp6ypembyszn68h5d3tf_2bv6+nfb7b...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" You only have a single plus sign before the second invocation of show: ++ " " + show(pi * x * x) ++ "cm^2" Don't you mean concatenation? ++ " " ++ show(pi * x * x) ++ "cm^2" Good luck, -jn- On Wed, Apr 4, 2018 at 1:37 AM, 清羽 <1625143...@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@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > -- Beauty of style and harmony and grace and good rhythm depend on simplicity. - Plato -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20180404/17b9e8b3/attachment.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 118, Issue 2 *****************************************