The code in this repository is relevant to the assignments given in the course COL226, namely, programming languages, taught by Prof. Sanjiva Prasad.
-
Assign1: An efficient functional data type to represent editable strings.
-
Assign2: A definitional interpreter.
-
Assign3: Terms, Substitutions and Unification.
-
Assign4: Abstract Machines.
- For more elaboration on Krivine Machine click here.
-
Assign5: Type checker written in Prolog.
-
Assign6: Toy interpreter Prolog.
-
Assign7: Front-end for toy-interpreter.
- Assignment 1, 2, 3 are fine and working correctly.
- Assignment 4
- Parallel calls of krivine machine, even though correct, but needn't be implemented.
- SECD machine should give an error in a case like -
if true then 2+3 else 9/0
but my secd machine evaluates boolean case first and then decides which expression to be evaluated next, which is a minor error.
- Assignment 5
- In my code there was a possiblity of more than one type assumptions created in the output for a single variable, which is wrong or popping order should be set accordingly.
- Assignment 6
- Working correctly and cut implemented by forced enter, in a way, like actual prolog.
- Assignment 7
lexer.mll
working correctly andparser.mly
is causing some errors, that would be hard to correct and will cause major changes in the already coded program. The semester is over and I am not going to complete it. Let's leave something incomplete.
- Programming Language Pragmatics by Michael Scott.
If you are having some kind of difficulty understanding a part of the code, feel free to create an issue. Also, feel free to improve the code by forking it over.
If this code is one of your assignments, I strictly recommend you to try it out first by yourself and then come and have a look, if needed. Otherwise, feel free to use it if you want to expand the language or for any other purpose.
-
IIT Delhi uses a tool named MOSS (Measure Of Software Similarity) to detect similarity in code, even though it will be hard to detect copying while working with OCaml given that it's a less-typed functional programming language, and more or less there will always be a similarity around 30%. But still, if you are copying the code from here, make sure to build sufficient changes or prepare to fail if caught.
-
Registering for MOSS service is free. So do check your similarity score, if copying, before submitting the assignment and aim at a score below 30.