-
Notifications
You must be signed in to change notification settings - Fork 0
Intception Report
The aim of the project: Implement more sophisticated stylistic and error hints for F# targeted at new programmers.
Examples include:
- unbalanced opening bracket is currently not detected
- identify complex expressions and suggest simplification
- replace anonymous functions used in complex expression by using a sub-function instead
The ultimate goal would be to incorporate this project into Ionide, which is a widely used plugin for Intellisense and other features for F#.
There is currently many other projects with similar goals called FSharpLint. FSharpLint currently sits within Ionide and provides stylistic hints. Other functional languages have numerous features that could be incoporated into F#.
To improve functional language skills (as someone with only basic experience) a core personal objective is to learn FSharp and gain knowledge in how a functional language differs from a procedural one.
Functional programming exists within several procedural languages such as Javascript and Lambdas in modern C++ and therefore would be incredibly useful.
It is expected that I will be able to build up a basic understanding of F# by the end of November, and start programming a web application in Fable (Fsharp framework) to gain
- an understanding of how F Sharp would be used for real work
- as well as record down the possible heuristics/errors I encounter as a beginner This web application would ideally be completed during the winter holidays before the start of the next term (Jan 7th).
The project deliverables can be broadly broken into two parts:
- Heuristics Research
- Implementation
In-depth research needs to be completed to investigate different types of heuristics that could be implemented into the project. This can be from
- research/surveys from open source community
- research/surveys from academics
- research/surveys from industry
- research/own experience (Recording down issues)
For my own experience, I would be recording down my issues throughout the project.
For the planned surveys, this would ideally occur after setting up an initial implementation of the project. The current planned date is January 7th 2019 (for making/distributing the surveys).
This will be the hardest and also the most important part. Currently, the visualisation is to first evaluate the current similar/available projects to determine whether they can be used as an initial starting point, or if a new framework needs to be developed from scratch
From current research it is expected that some of the functionality of the project will be able to be done through current projects. Additional functionality that is not supported would then be needed to written from scratch and modified to combine with the starting code. This can include writing up a new analyser/searching along a different section of the Abstract Syntax Tree
Next would be to demonstrate a working implementation for one of the heuristics. This can be a simple program that gives hints, depending on initial evaluation integrate this with Ionide.
It is expected that Implementation will take up the majority of the time for this project. A rough timeline (for implementation) is as follows:
- Nov/December 2018 - Finish evaluation of different frameworks
- Dec/Jan 2019 - Implement a working copy of the project
- Jan 2019 onwards - Include additional heuristics based on surveys, past experience and user feedback
Planned hours working on the project during the term will reflect the number of modules/expected workload for that term. In a short summary, the currently planned workload is:
- Autumn term (5 modules,1 exam, 2 CW) - 4 hrs/week
- Autumn holidays (2 CW modules due) - 10 hrs/week
- Spring term (3 modules, 2 CW) - 8 hrs/week
- Spring holidays (3 exams) - 8 hrs/week
- Summer term - Full time after exams - 30-40 hrs/week
- Number of heuristics to add is possibly infinite
- as long as I can come up with them
-
Research
-
Implementation
-
Weekly Reports
-
Meeting Feedback