Suggestion: Syntactic sugar for Maps!

Neil Mitchell ndmitchell at gmail.com
Sun Dec 14 09:35:35 EST 2008


Hi Alson,

>>>> > So why not {"hello": 1, "there": 2} ?
>
> A comment from the peanut gallery:
>  I took circ's comment to be a suggestion that we adopt an _idiom_.
> That you can non-idiomatically accomplish the same thing in Haskell by
> defining some datatypes and functions doesn't seem to address the core
> suggestion.
>
>  I'd rewrite circ's suggestion as follows:
>   A bunch of modern and popular languages use the idiom of braces for
> maps (e.g. { 'a' => 1, 'b' => 2} ).  Its simplicity has made maps
> vital parts of most programs.  Much of the world has adopted this
> idiom and if Haskell adopts this syntactic sugar it will make it
> easier for others to adopt Haskell.

I am fairly certain someone could write the necessary magic so:

do {'a' ~> 1; 'b' ~> 2}

becomes a map without any changes to the language at all. It seems
like throwing syntax at a problem should be a last resort. I often do:

let (*) = (,) in ['a' * 1, 'b' * 2]

I find that quite elegant as an associative list, which you can then
convert to a map, a hash table, use as an associative list etc.

I also think that those who are looking for Haskell will have their
mind so blown by lazy evaluation that keeping their maps similar isn't
so necessary :-)

Thanks

Neil


More information about the Haskell-prime mailing list