
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 21/07/13 15:23, martin wrote:
Am 07/21/2013 03:08 PM, schrieb Mateusz Kowalczyk:
On 21/07/13 13:36, martin wrote:
Hello all,
What is the best way to enter several (key, value) pairs into a Map, such that the code "looks nice", kind of like the do-notation with monads.
I suppose this question is not really specific to a Map. It is about chaining functions with a type of a1 ->...-> an -> b -> b.
Is there any syntactic sugar available?
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
There's no sugar but that doesn't mean you have to have something that doesn't look nice! Hackage tells me it's an instance of monoid.
*Main Data.Monoid Data.Map> singleton 1 2 fromList [(1,2)] *Main Data.Monoid Data.Map> singleton 1 2 <> singleton 2 3 fromList [(1,2),(2,3)] *Main Data.Monoid Data.Map> singleton 1 2 <> singleton 2 3 <> singleton 4 3 fromList [(1,2),(2,3),(4,3)]
There's of course fromList *Main Data.Monoid Data.Map> fromList [(1, 2), (3, 4)] <> fromList [(7, 2), (8, 4)] fromList [(1,2),(3,4),(7,2),(8,4)]
*Main Data.Monoid Data.Map> fromList $ zip [1 .. 3] ['a' .. 'z'] fromList [(1,'a'),(2,'b'),(3,'c')]
I don't think that fromList looks nice enough, especially considering that you can split it across many lines etc. It'd be easier to help if you could be more specific about what you're looking for.
I just want to insert several key/value pairs, something like
Map.empty insert key1 val1 insert key2 val2 return theMap
I know I can achieve this with dollars and by reversing the order, such that Map.empty is at the end. But I don't think it is pretty.
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
Map is not a monad so you can't use do. `do' is just sugar for >>= so if you don't have a monad, can't use it. You could try running it inside of the State monad but I think you'll find that it's a lot of hassle to do and is just not worth it. - -- Mateusz K. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (GNU/Linux) iQIcBAEBAgAGBQJR6/q/AAoJEM1mucMq2pqXqSwP/0GBUd28y34DPystvY8+Sgbs 363IPm1QDTXrX7gkc3OTelOPoqgZmzlF1uKu3OGcjlD9mxqiyTv4QPXSjieslpe3 QSE6O/5BqQYokbBfmVyEuCHamr4z/ta53F/W9IA7ElIvXb6cMupy78VB+Qnybsss G3JOZeDCG5CMuBSmaDpk3iN8LGEQxbDgriEYraC1N5GFv2dQ+5vcRHn4XD8C8yH9 2WAAlIHncKTPNX7hWnuiIYzj2fwhbtBa1oImtufEsAjKfmQHoorG7ZBG0SSKzk9X lxpxLNW/Rh0L3EYIprUl2PVCjC/r3FRT2v+TtToLsHuFt8RYM0bCMk/gM8KhjKxg LXNUKlCiKdAK9vFF8/5NHGD7G8yAueqR5tY6YpLoL21NL3SLuFM2DFFT5nQNtHO4 awa4ie1e0rA1iRcho/r/TH1Pr3i/AN1uNyQCDyEQFHloiyv2x8dpEDxMnPfIJe44 teEapLwWy/y0qpRuXn2wiyrQsVmr+9F1In/DfE/KR9gYsbnvGZPIGiZ9JWfgQ5z1 3FRVW5gVDyt/mHKXxt0c9CPI3lA0cuLTrUL6UrBRzfajSCIzvbVW/MpzJ4h/5VDj Tf+pggHVQbiLnGCsGwVtj1p1CfDUp1yqF3SmoDaeODIY0qJ+gHL9rR49VVRB1eo9 MHippyvD6ZiyqwdxfAjH =bS97 -----END PGP SIGNATURE-----