[Haskell-beginners] Syntactic sugar to insert into a Map?
fuuzetsu at fuuzetsu.co.uk
Sun Jul 21 17:14:07 CEST 2013
-----BEGIN PGP SIGNED MESSAGE-----
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 ->
>>> Is there any syntactic sugar available?
>>> _______________________________________________ Beginners
>>> mailing list Beginners at haskell.org
>> 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
>> *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
> _______________________________________________ Beginners mailing
> list Beginners at haskell.org
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.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (GNU/Linux)
-----END PGP SIGNATURE-----
More information about the Beginners