Don’t be too quick to judge that! It has plenty of quirks and subtle behaviors. How far are you into passing the C++ Nix test suite? There are also plenty of (sometimes very weird edge) cases we discovered while implementing the Tvix Nix evaluator here. Especially attribute sets and scoping are very subtle.
Sadly due to the current lack of spec, finding out the correct behavior mostly involves trying to break your interpreter compared to the C++ one or reading the latter’s code.
Comparing functions does not make sense. However, for historical reasons, functions can be compared by pointer in certain circumstances.