Posts

Showing posts from August, 2021

Third Post 22/08/2021

This week I wasn't as active in this assignment. This is because I all but finished it! I finished the integration and found the bug, shortly after the previous post. I then got to do online schooling wher I mostly worked on other assignments and things I have been very busy with and putting off in this assignment. I am not going to implement custom data types yet, and am going to do that after the prototype is due, although I am begginging to fear this moment. This is because I hvae tried to write the code to fit in with this but I have not stuck tothat and a lot of the code base relies on only ever using 0 and s so updating it is going to be an almost complete refactor of the system. In other news I also thought of an idea. I think I might be able to run some sort of logic programming / nondeterminstic algorithm with the splitting of the call stack. Although I am having a hard time building out this idea with purely numbers, I might be able to get a better understanding of wha...

Second fortnight 14/08/2021

 Progress: This fortnight I finished the base execution engine, worked on the primitive semantics checker and the integration between primitive and non-primitive functions.  For the first few days I cleaned up the code to make it readable, I decided not to go all-in on the oop but instead to use it in a few places that are particularly unreadable. Finishing the base execution engine ended up being fairly quick and breezy and it worked like a charm first try, which is a rarity. The stack base bytecode ended up being really useful and helped organize the code better than having to work through all the embedded lists as I used to do. It did cause some issues sometimes when I forgot I was using it but for the most part, they were a great idea. After that for the first week, I mostly procrastinated and worked on other projects so I ended up working less on the project than I hoped for. Although even though I spent far less time than I thought I would on this project, the primitive ...

First fortnite 31/07/2021

I initally tried to research walther recursion as I had heard it was the normal way of specifying functions for total functional programming languages. But total functional programming and it's languages are poorly documented and the original paper on walther recursion was thousands of dollars so I gave up the effort. I then wrote up the language specification (the most up to date link is here: https://docs.google.com/document/d/1VaQIqCRbHQcMX1CR2NVf0SVfpH9rvEA5TUewIfpVD3I/edit?usp=sharing). To show off here is the syntax bnf: <program> ::= <line> ‘;’ <program> | <line> ‘<EOF>’ <line> ::= <primtive_definition> ‘=’ <expr> <line> ::= <non-primitive_definition> ‘=’ <expr> <primitive_definition> ::= NAME ‘(‘ <data_list> ‘)’ <non-primitive_definition> ::= NAME ‘{‘ <data_list> ‘}’ <data_list> ::= <successors> ‘,’ <data_list> | <successors> <successors> ::= ‘s’ ‘[‘ <s...

First project overview

The project I am going for is a total functional programming language. The thing that makes it unique is a way of implementing the integration between primitive and non-primitive functions.  the idea is summarized below: In most total functional programming languages, the relationship to non-total functions within that language is often poorly made and poorly thought out. This project attempts to rectify this with a better system for implementing composition on primitive and non-primitive (or the equivalent in a different system) recursive functions. This is achieved through branching computation and making use of the bottom type for hypothetical non-halting functions. For future reference the base of this language is built around the mu-recursive functions / Peano arithmetic, this ends up being similar to the ml family. The full specification of this language will be written later on. The initial timetable is below: Deliverable Duration Completion Date Dependencies Further researc...