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. Re: Add parenthesis to Sin/Cos expressions (Sumit Sahrawat, Maths & Computing, IIT (BHU)) 2. mapKeysMaybe (Dennis Raddle) 3. Re: mapKeysMaybe (Lyndon Maydwell) 4. Re: mapKeysMaybe (Lyndon Maydwell) 5. Re: mapKeysMaybe (Lyndon Maydwell) ---------------------------------------------------------------------- Message: 1 Date: Thu, 5 Nov 2015 22:46:43 +0530 From: "Sumit Sahrawat, Maths & Computing, IIT (BHU)" <sumit.sahrawat.ap...@iitbhu.ac.in> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Add parenthesis to Sin/Cos expressions Message-ID: <cajbew8mvjapegzfzhu5rhzo5-ngrz69lusstof6bj6tzfqf...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" The spirit of declarative programming lies in the fact that you try to just tell the compiler what something means. Instead of thinking about keeping track of the numbers of parentheses, and then applying them afterwards, I would suggest you create a function to do the same job: bracketed :: String -> String bracketed s = "(" ++ s ++ ")" This would allow you to remove the numeric argument, and also write cleaner code. The second thing that you can improve is the pattern matching. You can use isPrefixOf <http://hackage.haskell.org/package/base-4.8.1.0/docs/Data-List.html#v:isPrefixOf> to check functions, or use a take inside a case statement to get cleaner handling of different cases. case take 3 str of "sin" -> ... "cos" -> ... _ -> ... This would also let you debug your code more easily, just as you require. On 4 November 2015 at 14:51, Imants Cekusins <ima...@gmail.com> wrote: > > a function that is supposed to add parenthesis to sin/cos expressions. > a) Sin 5 + 3 -> Sin(5) + 3 > b) Sin Cos (5+3) -> Sin (Cos(5+3)) > c) Sin Cos 5 * 3 -> Sin(Cos(5)) * 3 > > are you looking for textual representation or actual Haskell code which > runs? > if actual code, these examples may be re-written like this: > a) sin 5 + 3 > b) sin $ cos $ 5 + 3 > c) sin (cos 5) * 3 > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > -- Regards Sumit Sahrawat -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151105/a5795810/attachment-0001.html> ------------------------------ Message: 2 Date: Thu, 5 Nov 2015 23:29:36 -0800 From: Dennis Raddle <dennis.rad...@gmail.com> To: Haskell Beginners <beginners@haskell.org> Subject: [Haskell-beginners] mapKeysMaybe Message-ID: <cakxlvopg4uelsvrvq7z7j_i7wrlezmimtt+sx3abtwoej0h...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Can someone give me a clever way to implement mapKeysMaybe, defined as follows? Ord k => (k -> Maybe k) -> Map k a -> Map k a where the transformed keys that evaluate to Just are the only ones kept? I am thinking this will probably help me understand a new type, like traversable or something. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151105/3a0857ff/attachment-0001.html> ------------------------------ Message: 3 Date: Fri, 6 Nov 2015 18:43:47 +1100 From: Lyndon Maydwell <maydw...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] mapKeysMaybe Message-ID: <CAM5QZtxg089PfHuD9kxd4AhekRpJCNK69dd-p=H_q29j0Zi=1...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Well, this might not be the most efficient, but: mapKeysMaybe f = Data.Map.mapMaybeWithKey (const . f) What do you reckon? On Fri, Nov 6, 2015 at 6:29 PM, Dennis Raddle <dennis.rad...@gmail.com> wrote: > Can someone give me a clever way to implement mapKeysMaybe, defined as > follows? > > Ord k => (k -> Maybe k) -> Map k a -> Map k a > > where the transformed keys that evaluate to Just are the only ones kept? > > I am thinking this will probably help me understand a new type, like > traversable or something. > > > _______________________________________________ > 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/20151106/39d4a7c3/attachment-0001.html> ------------------------------ Message: 4 Date: Fri, 6 Nov 2015 18:46:40 +1100 From: Lyndon Maydwell <maydw...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] mapKeysMaybe Message-ID: <cam5qztzwspo+buoobx8c0wufmo+ptuv_pgy7mf4bodd9f_a...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Oops disregard that. The mapMaybeWithKey doesn't quite do what I expected. On Fri, Nov 6, 2015 at 6:43 PM, Lyndon Maydwell <maydw...@gmail.com> wrote: > Well, this might not be the most efficient, but: > > mapKeysMaybe f = Data.Map.mapMaybeWithKey (const . f) > > > What do you reckon? > > On Fri, Nov 6, 2015 at 6:29 PM, Dennis Raddle <dennis.rad...@gmail.com> > wrote: > >> Can someone give me a clever way to implement mapKeysMaybe, defined as >> follows? >> >> Ord k => (k -> Maybe k) -> Map k a -> Map k a >> >> where the transformed keys that evaluate to Just are the only ones kept? >> >> I am thinking this will probably help me understand a new type, like >> traversable or something. >> >> >> _______________________________________________ >> 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/20151106/e1c078d0/attachment-0001.html> ------------------------------ Message: 5 Date: Fri, 6 Nov 2015 19:19:03 +1100 From: Lyndon Maydwell <maydw...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] mapKeysMaybe Message-ID: <CAM5QZtzcqr2rG1m5ni-hTzMSpgW-5G6+=dal9ycvvd4uzp5...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Here's a more correct solution, unfortunately it's not as nice. {-# LANGUAGE TupleSections #-} import Data.Map hiding (mapMaybe) import Data.Maybe mkm :: Ord k => (t -> Maybe k) -> Map t a -> Map k a mkm f = fromList . mapMaybe (\(k,v) -> fmap (,v) (f k)) . toList On Fri, Nov 6, 2015 at 6:46 PM, Lyndon Maydwell <maydw...@gmail.com> wrote: > Oops disregard that. The mapMaybeWithKey doesn't quite do what I expected. > > On Fri, Nov 6, 2015 at 6:43 PM, Lyndon Maydwell <maydw...@gmail.com> > wrote: > >> Well, this might not be the most efficient, but: >> >> mapKeysMaybe f = Data.Map.mapMaybeWithKey (const . f) >> >> >> What do you reckon? >> >> On Fri, Nov 6, 2015 at 6:29 PM, Dennis Raddle <dennis.rad...@gmail.com> >> wrote: >> >>> Can someone give me a clever way to implement mapKeysMaybe, defined as >>> follows? >>> >>> Ord k => (k -> Maybe k) -> Map k a -> Map k a >>> >>> where the transformed keys that evaluate to Just are the only ones kept? >>> >>> I am thinking this will probably help me understand a new type, like >>> traversable or something. >>> >>> >>> _______________________________________________ >>> 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/20151106/023a08af/attachment-0001.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 89, Issue 6 ****************************************