Frequently Asked Questions about Assignments

Q: Can I change the names, types, or specifications of required functions?
A: No.

Q: Can I add or remove the rec keyword from a function definition without changing the function’s type?
A: Yes.

Q: May I use helper functions?
A: Yes. You do not have to nest them inside the primary function you are implementing; you are free to write them before it.

Q: Can I use library X as part of my solution?
A: If you’d like us to consider adding a library to the build scripts used by the grader, please ask! We have been known to do so in the past. But until we do so, sorry, your solutions may not require the grader to link any additional libraries beyond what the release code already links.

Q: May I change provided interface (.mli) files?
A: There are well-marked blocks of code in the .mli files that may not be changed, because those blocks declare the names and types against which we will test your solution. Outside of those well-marked blocks, you are permitted to add new declarations to the .mli files, because additional names and types the course staff is unaware of will not impair our testing.

Q: Can the whole class get an extension on this assignment because it’s really hard?
A: No. Just do your best to finish whatever level of scope you can.