It's #Coq time again and once again I will not be able to prove that eval actually terminates becase it uses auxillary (nontrivial) function which I cannot inline and I don't want to make another hack.
Also Haskell has tons and tons of info these days (relatively ofc). Not at all with Coq which is super old but still lacking a lot of info.