I haven't read that [https://interpreterbook.com](https://interpreterbook.com) but I've read this instead [http://buildyourownlisp.com](http://buildyourownlisp.com) free to read for html version
>From the name, it should be obvious that `peek` manipulate the line, taking >out the next char while the cursor position is still at it is. Hence its >signature `proc (lex: var Lexer): char` > Does defining the parameter as proc(lex: var Lexer) behave similar to a > pointer? This has the result of mutating state in the Lexer object? In other > words, it's like passing by reference rather than by value? Yes Read @yglukhov informational post on choosing `object` and/or `ref object` [https://forum.nim-lang.org/t/3869#24100](https://forum.nim-lang.org/t/3869#24100)
