The first suggestion I made was a bad one. I like the suggestion of the
json sigil, except that you loose things like syntax highlighting and
bracket matching in editors. I do still think that it is reasonable for
something like credo to suggest writing `%{foo: 1}` instead of `%{"foo":
1}` in situations where the quotes are unnecessary. I mentioned the problem
in the context of JSON, but it's more generally a problem of it being easy
to confuse quoted atoms as strings.

Allen Madsen
http://www.allenmadsen.com

On Thu, Sep 14, 2017 at 5:46 AM, José Valim <[email protected]
> wrote:

> Those are both valid syntaxes. I don't think Elixir nor Credo should warn.
> If another serialization becomes wide-spread in the future in a way it also
> causes confusion with Elixir syntax, should we also deprecate that other
> part of the Elixir syntax? The rationale of why it works in Elixir is
> because we allow :"such an atom" and keywords keep the same syntax except
> ":" is used at the end.
>
> If you are writing a lot of JSON, maybe one idea is to use a sigil so you
> can literally write JSON?
>
>
> ~j"""
> {
>   json: "this is literally json"
> }
> """
>
>
> The json can be converted to a data structure at compile-time if you don't
> have an interpolation. And if you have interpolation, you can probably
> change each interpolated argument to encode to json. So you can even do
> things such as:
>
> sub = ~j"""
> {foo: "bar"}
> """
>
> ~j"""
> {total: #{sub}}
> """
>
>
>
>
>
>
>
> *José Valim*
> www.plataformatec.com.br
> Skype: jv.ptec
> Founder and Director of R&D
>
> On Thu, Sep 14, 2017 at 2:02 AM, Allen Madsen <[email protected]> wrote:
>
>> I've thought about this and rather than warning when using trailing
>> colons on quoted atoms. It could make sense to warn when using quoted atoms
>> when the characters are valid for a non-quoted atom.
>>
>> %{"this": "warns"}
>> %{"this one": "doesn't"}
>>
>> I'm also exploring adding this to credo, in case it doesn't make sense
>> for Elixir core.
>>
>> Allen Madsen
>> http://www.allenmadsen.com
>>
>> On Wed, Sep 13, 2017 at 6:16 PM, Allen Madsen <[email protected]> wrote:
>>
>>> At work we deal with a lot of JSON and so it's common to have the
>>> equivalent of JSON in Elixir. A common problem people on my team have when
>>> they write out the Elixir structure is that they miss converting trailing
>>> commas into hash rockets.
>>>
>>> They have this:
>>>
>>> %{"x": 1}
>>>
>>> Instead of:
>>>
>>> %{"x" => 1}
>>>
>>> Because both look like a string, it's very easy to miss. I'm suggesting
>>> warning about the latter syntax as it can be a source of errors.
>>>
>>> My goal is that it become more obvious that you've made this type of
>>> error. If people don't like this suggestion, I'd love to hear other ideas
>>> about ways this problem could be addressed.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "elixir-lang-core" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/elixir-lang-core/14344c22-06a8-42c2-a827-29359a826ad0%40
>>> googlegroups.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/14344c22-06a8-42c2-a827-29359a826ad0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/elixir-lang-core/CAK-y3Cv%2B9yb0XwRh9tBNiKBE%3D09RL9m7F2
>> OXK6pUJxpNRA4%3DFQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAK-y3Cv%2B9yb0XwRh9tBNiKBE%3D09RL9m7F2OXK6pUJxpNRA4%3DFQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/elixir-lang-core/CAGnRm4JAqPxwr7z6W2tAWgUk%
> 3DEU5hj2LM00tQii5ymC64AJ1XA%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JAqPxwr7z6W2tAWgUk%3DEU5hj2LM00tQii5ymC64AJ1XA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAK-y3CuBFYgNG1aG2hGAibbK4Q5M6R-grrROHccqjQ31evZP0Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to