Hey, i currently try to learn the nix language and i have a question about recursion. This is my solution for Advent of Code 2015 day 4
let
input = "abcdef";
part1 = number:
if (builtins.substring 0 5 (builtins.hashString "md5" "${input}${builtins.toString number}")) == "00000" then
number
else
part1 (number + 1);
part2 = "not implemented";
in {"Part 1" = part1 1; "Part 2" = part2;}
since i put the recursive call at the end of the function i assumed it would do some magic or tail call optimization stuff, but it results pretty fast in a stack overflow is there a way to get it working?
Whenever it better expresses what you mean. In most cases it doesn't make a huge difference because the compiler don't care