A specific question I had was with ex3 Lexical parser: I found I had to put two function (from_string and to_string) into WORD sig. I felt that I shouldn’t have needed to do this ? That I should have been able to tell the functor LexTree what W.alpha was? Basically a bit confused about sharing constraints and exposing/not exposing types to the outside world.
I haven’t looked at the whole code but there is a difference with the Association Lists requirements: the exercises asks for a functional/immutable interface, but your add/delete functions are imperative, they return unit – and indeed your implementation had to wrap the value in a mutable cell. Is this difference intentional?
I guess the book itself is a bit outdated but I thought the chapter on modules and functors was still relevant? Also I hadn’t realised one could use module sigs as different views on a larger struct. I thought that was pretty neat but maybe that is bad practise?
Anyway - to be clear I was trying to get some help with my solutions to chapter 14 exercises, I understand some aspects of the book might be out of date.