For anyone interested I published a proof-of-concept for this 
here: https://github.com/elixir-lang/elixir/pull/9640

W dniu piątek, 25 października 2019 20:21:54 UTC+2 użytkownik OvermindDL1 
napisał:
>
> I've always thought that structs could use a 'constructor' format like 
> `%URI("https://elixirforums.com/";)`, and it would just be rewritten in 
> code to be `URI.create("https://elixirforums.com/";)` *with* 
> auto-requiring of it so macro's work out-right (though that could of course 
> be optional in an actual spec perhaps).  I could imagine a Pid being like 
> `%Process.Pid(0, 55, 0)` or so.
>
> However, I'm not sure it really gains much to the language. Sure I don't 
> like the `#...` inspections of things like `PID`'s, but I still wouldn't 
> add the above.  Instead I'd standardize on inspections being a 
> representative object, so PID's instead of printing like `#PID<...>` they 
> should print 'as' the fully construction as however they should be 
> constructed, even if it is an IEX only style constructor.
>
> On Friday, October 25, 2019 at 7:56:57 AM UTC-6, Ben Olive wrote:
>>
>> I really like the idea of a syntax that delegates to a module! 
>>
>> That would make a pid something like `%Process<0.55.0>` or `
>> %Process.Pid<0.55.0>` which is't a big stretch from the current `
>> #PID<0.55.0>`
>>
>> On Fri, Oct 25, 2019 at 8:49 AM Kelvin Raffael Stinghen <
>> [email protected]> wrote:
>>
>>> > So I really don't think this feature would be usable with sigils.
>>>
>>> Yeah, sure, I was just trying to think of examples of the top of my 
>>> head, I’m sure it would still have a lot of limitations, but I think it 
>>> would be worth the try.
>>>
>>> > No, they are enforced by the language.
>>>
>>> I see. I vote for only caring for the first letter then.
>>>
>>> > So this is a separate discussion but what I'd rather see is another 
>>> sigil like mechanism for structs that would make these valid:
>>> >
>>> > URI[https://elixir-lang.org]]
>>>
>>> Why not actually using sigils for that? With multi letter sigils we 
>>> could do that. Would you want to automatically import that? If that’s the 
>>> case, maybe a better syntax for the feature would be something like: `%URI”
>>> https://elixir-lang.org”`, so that would delegate the construction to a 
>>> `from_string` function (or macro) on the module for example. 
>>>
>>> Anyway, I like your idea too, but as you mentioned, that would not 
>>> address my concern, as PIDs are not structs, so I think that multi letter 
>>> sigils would be the way to go for that, since it looks like adding one more 
>>> one letter sigil for it will not get accepted.
>>>
>>> Best,
>>> Kelvin Stinghen
>>> [email protected]
>>>
>>> On Oct 25, 2019, at 04:00, José Valim <[email protected]> 
>>> wrote:
>>>
>>> Maybe*. Sigils follow the rules for strings, so they are not really good 
>>> for handling code and this was one of the lessons learned by the 
>>> shorter_maps project. For example, imagine you want to do this:
>>>
>>>     ~Project{id ~Manager{id}}
>>>
>>> It doesn't really work because you have to escape the closing } inside 
>>> the manager. Sure, you could alternate {...} with <...> or something else, 
>>> but that's precisely the point. Sigils are strings, and they are not 
>>> structured text, so you have to escape and handle delimiters accordingly.
>>>
>>> The other issue is that sigils are currently lexical, so you would have 
>>> to import the lexical sigil for every struct before your shorter maps 
>>> proposal. So I really don't think this feature would be usable with sigils.
>>>
>>>
>>> -- 
>>> 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/6ACCD0A4-30C6-4E47-852F-FC4A16EB5CB3%40gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/elixir-lang-core/6ACCD0A4-30C6-4E47-852F-FC4A16EB5CB3%40gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
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/d37fc491-baa1-453a-a086-088d3ae21e88%40googlegroups.com.

Reply via email to