Introducing Haskelly – Haskell extension for Visual Studio Code

 

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

Janos Potecki

Marco Concetto Rudilosso

Marti Serra Vivancos

image

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.

image

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.

image

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

HASKELLY

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.

SIMONP

 

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

image

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/