Introducing Haskelly – Haskell extension for Visual Studio Code

02/13/2017

2 minutes to read

In this article

Can I Introduce you to Haskelly team from University College London, System Engineering course.

Janos Potecki

Marco Concetto Rudilosso

Marti Serra Vivancos

Janos, Marco and Marti are three students, currently studying Computer Science at University College London. As part of their system engineering course they are undertaking a team based project. They have been working on a Visual Studio Code and Microsoft Azure Cloud project, to build a Visual Studio Code extension which supports the teaching and learning of Haskell.

Haskell is used widely in academia and also used in industry. But specifically many of the worlds Universities teach Haskell as the first FUNCTIONAL language. The opportunity with this extension and Azure really shows off the power of VSCode as the primary IDE on Windows, MacOS and Linux.

The team are developing an Azure hosted toolset entitled SEAT, SEAT Scaffolding Exercise Automation Toolkit provides a valuable teaching assistant to the Academics and TA in the evaluation of the Haskell learning from students. Students simply submit assignments and resources to the code validation engine assessing the students learning and competencies.

The Haskelly extension has been in development for the past 4 weeks and the team had a superbly impressive demo which shown the VS code Extension working intellisense code completion and quickcheck. The team successfully developed the extension and have made it available for FREE in the Visual Studio Marketplace https://marketplace.visualstudio.com/items?itemName=UCL.haskelly they have had over 2,000 downloads.

Last week the team and their academic supervisor, Dr Dean Mohamedally had the opportunity of meeting Simon Peyton Jones at Microsoft Research Cambridge. Simon is a major contributor to the design of the Haskell programming language, and a lead developer of the Glasgow Haskell Compiler (GHC).

Simon is also co-creator of the C-- programming language, designed for intermediate program representation between the language-specific front-end of a compiler and a general-purpose back-end code generator and optimiser. C-- is used in GHC. During the meeting Simon shared his experiences and insight with the team and they discussed potential new features for the extension.

Haskelly Features

Syntax Highlighting

Code completion

Scripted Toolchain with Haskell's components (as programme or using GHCi)

QuickChecksupport

SEAT for UCL

AZURE Cloud Based

Cloud based allows classroom analysis

Students load encrypted file into VS Code

Automatic Checking for Students

The intention is that the SEAT toolset will be used within UCL Functional programming courses and provide a Cloud Based classroom analysis Students load encrypted file into VS Code Automatic Checking for Students code.

Plugin with piping architecture overview

Different approaches:

Running code: stack runhaskell in the integrated terminal

GHCi:running a JS file that pipes a process’s output to its own stdout and handles input

QuickQueck: using a spawn process and parsing the output to display feedback

Code completion: direct implementation using a dynamic spawn process

The intention is that SEAT Scaffolding Exercise Automation Tools will be used for all UCL students

Server-less programming

Code hosted in a repository -> automatic deployment

Azure Web App manages Authentication

Azure Functions run on– demand

So in summary VS Code makes it easy to develop plugins for education

Azure Web Apps setup with auto. deployment

Institutions running O365 and AAD can utilise Azure Authentication for professors and Students providing single sign on to the necessary resources.

If your interested in learning more about developing Visual Studio Extensions see

https://code.visualstudio.com/docs/extensions/overview

If you interested in understanding what extension are currently available see https://visualstudiogallery.msdn.microsoft.com/