Skip to content

Intception Report

Louis Kueh edited this page Nov 12, 2018 · 2 revisions

Interim Report

Aims & background material

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#.

Background research

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#.

FSharp Learning

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).

Summary of project deliverables (similar to Implementation plan of interim report?)

The project deliverables can be broadly broken into two parts:

  • Heuristics Research
  • Implementation

Heuristics

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).

Implementation

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

Notes on Timeline

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

Fallbacks

Extensions

  • Number of heuristics to add is possibly infinite
    • as long as I can come up with them

Clone this wiki locally