Nimrod language
Araq
rumpf_a at web.de
Mon May 28 01:21:35 PDT 2012
On Saturday, 26 May 2012 at 11:49:47 UTC, Chad J wrote:
> On 05/24/2012 07:21 PM, Araq wrote:
>> On Thursday, 24 May 2012 at 22:56:52 UTC, Kevin Cox wrote:
>>> On May 24, 2012 6:53 PM, "Froglegs" <lugtug at yahoo.com> wrote:
>>>
>> Nimrod is full of constructs that have inlining semantics and
>> as such
>> declaration order matters quite a bit. The D compiler has/had
>> bugs with
>> this feature for a reason. ;-)
>
> OK, now I'm curious. Why?
>
Because it's hard to implement? ;-)
t() # the compiler needs to *expand* t here; parsing t's
# header and put it into the symbol table is not enough
template t() = ...
And Nimrod supports symbol table inspection:
when not defined(p):
proc p = echo "a"
else:
proc p = echo "b"
p() # what should that do?
These things can be solved, but it's lots of work and I have no
idea how the result would affect compile times (probably
negligible).
>> I'm considering to weaken the requirement but I don't mind
>> this feature:
>> Having the order reflect the call graph has its advantages
>> too. Many
>> consider the resulting order *backwards*, but at least there
>> is *an* order.
>>
>
> Wouldn't it be good enough to define the order arbitrarily when
> building your symbol table? What kind of information is this
> allowing the programmer to convey to the compiler?
>
I was talking about readability here. You can read an ordinary
(smallish) Nimrod program from *bottom to top*. (And a forward
declaration often screams "warning: mutually recursive procs
ahead").
Granted, from *top to bottom* would be nicer, but I have never
seen that happen in practice in C# (which allows for arbitrary
order); but admittedly that's a very weak point.
> I'm already skeptical because I have no intuition for how this
> allows me to better optimize my code ;)
> Btw, I've looked at Nimrod a while ago (year+) and found it
> very elegant. I love good metaprogramming. I think my only
> complaints were the bus-factor and the apparent lack of array
> slices (the kind that doesn't cause copying). Still, very
> promising.
See my other answer about the slicing. The bus factor got better
as there are now 3 core developers. :-)
More information about the Digitalmars-d
mailing list