Hacker News new | ask | show | jobs
by gridlockd 2064 days ago
> Just please do not make the mistake of believing that it is unique to Zig. Factor brings the best of Forth and Lisp together...

What is unique to Zig is that it has these features without bringing together "the best of Forth and Lisp". Sometimes, just being pedestrian is a virtue.

1 comments

But comptime is kind of LISP's unique feature, it's just called macros.

EDIT: In fairness, Zig's presentation is pretty likeable. You can do a comptime expression pretty trivially in LISP, a comptime parameter or block would require actual effort.

No. There is a real difference between staged computation of the type that zig has and macros in common lisp, scheme/rust have (so much for lisp's uniqueness BTW). In common lisp you can do completely arbitrary computation at compile- (or read-)time in zig you cannot and crucially you are also not responsible for manually ordering the "stages". E.g. in common lisp you have use eval-when to make sure that stuff is available at the right phase, whereas zig works out the dependency for you.
Can you please provide an example of Zig "working out the dependency"? I'm struggling to make sense of your comment.
I could write a concrete example that will work in zig and fail in common lisp, but maybe this link is enough?

https://ziglang.org/#Order-independent-top-level-declaration...

Oh, so is the point that in Zig, functions with comptime parameters are more or less identical to regular functions in that regard?
Exactly. You can also use non-comptime functions in comptime, if it avoids certain types of stateful behaviour.