© VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos &...
-
Upload
melvin-elliott -
Category
Documents
-
view
250 -
download
3
Transcript of © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos &...
![Page 1: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/1.jpg)
© VHS/VHS-AM Team
IntegratingIntegrating Haskell Haskell withwith Visual Visual Studio Assignment ManagerStudio Assignment Manager
André Santos & VHS/VHS-AM [email protected]
![Page 2: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/2.jpg)
© VHS/VHS-AM Team
HaskellHaskell• Pure functional programming languagePure functional programming language• Strenghts...Strenghts...
– High level of abstractionHigh level of abstraction– Concise code (4x to 10x smaller)Concise code (4x to 10x smaller)– Strong Mathematical foundationStrong Mathematical foundation– Modules, Abstract Data TypesModules, Abstract Data Types– Polymorphism, high order functions, Strong typingPolymorphism, high order functions, Strong typing– higher productivity, easier maintenance, higher higher productivity, easier maintenance, higher
code reusecode reuse– Lazy Semantics Lazy Semantics infinite data structures infinite data structures
• But weaknesses too...But weaknesses too...– Limited Integration with other technologiesLimited Integration with other technologies– No powerful IDEsNo powerful IDEs
![Page 3: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/3.jpg)
© VHS/VHS-AM Team
Project HistoryProject History• Haskell + VS.NET Integration Haskell + VS.NET Integration VHS VHS
ProjectProject– Personal initiative/interest: Personal initiative/interest:
André and Simon Marlow (MSR)André and Simon Marlow (MSR)– started by mid-2003started by mid-2003
Assignment Manager extensions RFPAssignment Manager extensions RFP– RFP for extending Assignment Manager RFP for extending Assignment Manager
(end of 2003)(end of 2003)– MS Shared Source tool for submitting and MS Shared Source tool for submitting and
evaluating student assignmentsevaluating student assignments The VHS-AM ProjectThe VHS-AM Project
![Page 4: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/4.jpg)
© VHS/VHS-AM Team
Combined ObjectivesCombined Objectives
• Allow the use of Assignment Manager for Allow the use of Assignment Manager for teaching Haskell by extending Assignment teaching Haskell by extending Assignment Manager and/or Visual Studio .NETManager and/or Visual Studio .NET
• Have a full IDE for HaskellHave a full IDE for Haskell
VHS-AM ProjectProjectVHS ProjectVHS Project
![Page 5: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/5.jpg)
© VHS/VHS-AM Team
This presentationThis presentation
•MS Assignment Manager•VHS (Visual Haskell) and VSIP program•Demo•Conclusions and Future Work
![Page 6: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/6.jpg)
© VHS/VHS-AM Team
Assignment ManagerAssignment Manager
• Faculty (teaching) Faculty (teaching) ToolsTools
• Student ToolsStudent Tools• Assignment ManagerAssignment Manager
![Page 7: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/7.jpg)
© VHS/VHS-AM Team
Faculty ToolsFaculty Tools• Set of tools for managing the Set of tools for managing the
publishing of courses and course taskspublishing of courses and course tasks• Two main parts:Two main parts:
– Assignment Publishing ToolsAssignment Publishing Tools– Code ExtractionCode Extraction
![Page 8: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/8.jpg)
© VHS/VHS-AM Team
Assignment Publishing Assignment Publishing ToolsTools• Allows the publishing of courses and Allows the publishing of courses and
taskstasks• Students access the course Students access the course
site/materials therough:site/materials therough:– webweb serverserver (http:// ...) (http:// ...)– network share (\\Server\folder)network share (\\Server\folder)– ftp server (ftp:// ...)ftp server (ftp:// ...)
![Page 9: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/9.jpg)
© VHS/VHS-AM Team
Adding a new courseAdding a new course
![Page 10: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/10.jpg)
© VHS/VHS-AM Team
![Page 11: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/11.jpg)
© VHS/VHS-AM Team
![Page 12: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/12.jpg)
© VHS/VHS-AM Team
Submitting a new taskSubmitting a new task
![Page 13: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/13.jpg)
© VHS/VHS-AM Team
Disponibilizando Disponibilizando uma tarefa ...uma tarefa ...
![Page 14: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/14.jpg)
© VHS/VHS-AM Team
Code ExtractorCode Extractor• Allows teacher to hide parts of the Allows teacher to hide parts of the
source code of a projectsource code of a project• Tells the students where to write their Tells the students where to write their
own codeown code• ““Template” projectsTemplate” projects
![Page 15: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/15.jpg)
© VHS/VHS-AM Team
Hiding code...Hiding code...
![Page 16: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/16.jpg)
© VHS/VHS-AM Team
![Page 17: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/17.jpg)
© VHS/VHS-AM Team
![Page 18: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/18.jpg)
© VHS/VHS-AM Team
Student perspective...Student perspective...
![Page 19: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/19.jpg)
© VHS/VHS-AM Team
Student ToolsStudent Tools• Allow the students to see the courses’ Allow the students to see the courses’
sitessites
![Page 20: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/20.jpg)
© VHS/VHS-AM Team
![Page 21: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/21.jpg)
© VHS/VHS-AM Team
![Page 22: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/22.jpg)
© VHS/VHS-AM Team
After joining a course After joining a course the student can see the student can see what tasks are what tasks are available...available...
![Page 23: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/23.jpg)
© VHS/VHS-AM Team
Assignment ManagerAssignment Manager• Improved version of the Improved version of the Assignment Assignment
Publishing ToolsPublishing Tools• Web application, that requires:Web application, that requires:
– ASP.NETASP.NET– SQLServer or SQLServer or Microsoft Data EngineMicrosoft Data Engine– Internet Information ServicesInternet Information Services (IIS) (IIS)– Microsoft Message QueuingMicrosoft Message Queuing (MSMQ) (MSMQ)
![Page 24: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/24.jpg)
© VHS/VHS-AM Team
A.M.A.M. Architecture Architecture
Assignment Assignment Manager ServerManager Server
Faculty Clients
Student Clients Student Clients
Creation of a
Creation of a coursecourse
Publishes ta
sks and marks
Publishes ta
sks and marks
Access to available ta
sks
Access to available ta
sks
Solution submissionSolution submission
Access to marks
Access to marks
![Page 25: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/25.jpg)
© VHS/VHS-AM Team
A.M.A.M. – Communication – Communication
• Lecturers can contact students Lecturers can contact students through:through:– E-mailE-mail– Internal message systemInternal message system
![Page 26: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/26.jpg)
© VHS/VHS-AM Team
![Page 27: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/27.jpg)
© VHS/VHS-AM Team
A.M.A.M. – Publishing tasks – Publishing tasks
• Auto-build Auto-build andand auto-check auto-check • Extra files (e.g. I/O)Extra files (e.g. I/O)• Messages:Messages:
– Send ReminderSend Reminder, , Send Past Due NoticeSend Past Due Notice, , New Project NoticeNew Project Notice, , Updated Project Updated Project NoticeNotice
![Page 28: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/28.jpg)
© VHS/VHS-AM Team
A.M.A.M. – publishing tasks – publishing tasks
• After student submissions teacher can After student submissions teacher can assign marksassign marks
• Marks are available to studentsMarks are available to students
![Page 29: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/29.jpg)
© VHS/VHS-AM Team
![Page 30: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/30.jpg)
© VHS/VHS-AM Team
![Page 31: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/31.jpg)
© VHS/VHS-AM Team
![Page 32: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/32.jpg)
© VHS/VHS-AM Team
![Page 33: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/33.jpg)
© VHS/VHS-AM Team
![Page 34: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/34.jpg)
© VHS/VHS-AM Team
•Project History & Objectives•MS Assignment Manager•VHS (Visual Haskell) and VSIP program•Demo•Conclusions and Future Work
![Page 35: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/35.jpg)
© VHS/VHS-AM Team
Existing Haskell IDEsExisting Haskell IDEs
• Some tools have some Haskell support:Some tools have some Haskell support:– syntax colouringsyntax colouring– indentation (hard in Haskell!)indentation (hard in Haskell!)– jump to errorsjump to errors– menu of top-level declarationsmenu of top-level declarations– jump to definitionjump to definition– interactive compilation/evaluationinteractive compilation/evaluation– display type of an identifierdisplay type of an identifier
• Some tools: emacs, vi(m), WinHugs, Eclipse Some tools: emacs, vi(m), WinHugs, Eclipse plugin plugin
![Page 36: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/36.jpg)
© VHS/VHS-AM Team
ProblemsProblems
• Language support tends to be unreliable, Language support tends to be unreliable, because these environments are not because these environments are not using a real Haskell front-endusing a real Haskell front-end. . eg. eg. Colouring support in Emacs is really badColouring support in Emacs is really bad
• Different language flavours: Different language flavours: Haskell98+FFI, hierarchical modules, Haskell98+FFI, hierarchical modules, CPP, literateCPP, literate
• Jumping to an error often misses Jumping to an error often misses (compilers don’t have good source loc (compilers don’t have good source loc info)info)
• No real compilation supportNo real compilation support• Many, many, many more things an IDE Many, many, many more things an IDE
can do…can do…
![Page 37: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/37.jpg)
© VHS/VHS-AM Team
VHS Project ObjectivesVHS Project Objectives
• Integrate GHC with Visual Studio to Integrate GHC with Visual Studio to make a decent Haskell IDEmake a decent Haskell IDE
• Specify a programatic interface to Specify a programatic interface to GHC so that it can be re-used in other GHC so that it can be re-used in other IDE-like contexts.IDE-like contexts.
![Page 38: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/38.jpg)
© VHS/VHS-AM Team
Background: Visual Background: Visual StudioStudio
• Development shell, with several language plugins: Development shell, with several language plugins: VC++, VC#, VJ#, VBVC++, VC#, VJ#, VB
• Very rich feature setVery rich feature set– Lots of support for language integrationLots of support for language integration– Projects: multi-file applications/librariesProjects: multi-file applications/libraries– Solutions: multiple projectsSolutions: multiple projects– DebuggingDebugging– Integrated documentation, context-sensitive help etc.Integrated documentation, context-sensitive help etc.– Lots of support for automation/extension/customisationLots of support for automation/extension/customisation
• ““free” access to the integration APIs: free” access to the integration APIs: VSIPVSIP• Windows onlyWindows only
![Page 39: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/39.jpg)
© VHS/VHS-AM Team
VSIPVSIP• VVisual isual SStudio tudio IIndustry ndustry PPartnersartners
– set of COM APIs for integrating new set of COM APIs for integrating new functionality into VS:functionality into VS:• Language support in the editorLanguage support in the editor• ProjectProject• ToolsTools
– ““freely available” SDKfreely available” SDK– APIs are highly detailed, flexible & HUGEAPIs are highly detailed, flexible & HUGE– Babel (Daan Leijen) provides a simpler Babel (Daan Leijen) provides a simpler
abstraction layer for integrating simple abstraction layer for integrating simple language supportlanguage support
– http://http://www.vsipdev.comwww.vsipdev.com
![Page 40: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/40.jpg)
© VHS/VHS-AM Team
VS.NET IDE Itself
-Basic level of automation/extension
- customization of the IDE and creation of new components for VS.NET programming.
VS.NET Macros
- Widely supported by the IDE: Macros Explorer, VSMacros IDE, supports recording, debugging, etc.
- Can’t create GUIs, tool windows, etc.
VS.NET Add-Ins
- Higher integration: creation of new applications embeddded in VS.NET, including GUI
- Ideal for medium complexity extensions
- can’t be used to define new languages
VS.NET Wizards
- Takes the programmer step-by-step on the execution of a task
Extending VS.NETExtending VS.NET• VS.NET Extension Mechanisms:VS.NET Extension Mechanisms:
VSIP
- More powerful and much more complex
- The only way of supporting new programming languages and new project types
- Current version supports using managed code
- Used to implement most of our use cases
![Page 41: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/41.jpg)
© VHS/VHS-AM Team
Using VSIPUsing VSIP
Visual Studio
Babel
VSIP COM interfaces
Parser, type
checker,etc.
C/C++
Babel COM interfaces
Compiler
Direct to VSIP for project
support
Lex/Yacc parser or
Implementation of Babel Interfaces
![Page 42: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/42.jpg)
© VHS/VHS-AM Team
VHS ProjectVHS Project
Visual Studio
Babel
VSIP COM interfaces
HaskellService
C/C++ Haskell
Babel COM interfaces
GHC
Direct to VSIP for project
support
![Page 43: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/43.jpg)
© VHS/VHS-AM Team
Status of the VHS Status of the VHS ProjectProject
• We have:We have:– Syntax colouringSyntax colouring– accurate indication of erroneous accurate indication of erroneous
subexpressionssubexpressions– Parsing/renaming/type-checking as you type Parsing/renaming/type-checking as you type
(in a separate thread)(in a separate thread)– Brace matchingBrace matching– (Partial) (Partial) Project support including A.M. Project support including A.M.
supportsupport– Prototype of quick info supportPrototype of quick info support– Prototype of method tips supportPrototype of method tips support– Prototype of autocompletionPrototype of autocompletion
![Page 44: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/44.jpg)
© VHS/VHS-AM Team
ScreenshotsScreenshots
![Page 45: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/45.jpg)
© VHS/VHS-AM Team
ScreenshotsScreenshots
![Page 46: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/46.jpg)
© VHS/VHS-AM Team
ScreenshotsScreenshots
![Page 47: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/47.jpg)
© VHS/VHS-AM Team
ScreenshotsScreenshots
![Page 48: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/48.jpg)
© VHS/VHS-AM Team
DemosDemos
Method tip
Quick info + pop-up list
Taskbar errors
Brace Matching
![Page 49: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/49.jpg)
© VHS/VHS-AM Team
Features we wantFeatures we want• Extend Brace matching (e.g. let/in)Extend Brace matching (e.g. let/in)• Drop-down menu of top-level declsDrop-down menu of top-level decls• OutliningOutlining• Jump to definition (or docs for library fns)Jump to definition (or docs for library fns)• Easy access to documentationEasy access to documentation• Code model (programatic access to the source code)Code model (programatic access to the source code)• Inferred types tooltipsInferred types tooltips• Type of subexpressionType of subexpression• Further Project support:Further Project support:
– Multi-module support (automatically discover Multi-module support (automatically discover dependencies, etc.)dependencies, etc.)
– Library-infrastructure support (import/export Library-infrastructure support (import/export library infrastructure metadata gives a nice way library infrastructure metadata gives a nice way to package & ship a project)to package & ship a project)
![Page 50: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/50.jpg)
© VHS/VHS-AM Team
More ambitious More ambitious featuresfeatures
• Integrated FFI toolsIntegrated FFI tools• .NET integration.NET integration• DebuggingDebugging• GUI BuilderGUI Builder
![Page 51: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/51.jpg)
© VHS/VHS-AM Team
Current StatusCurrent Status
• Simon:Simon:– Use H/Direct for accessing COM APIs Use H/Direct for accessing COM APIs – Multi-threading support in GHC’s RTS Multi-threading support in GHC’s RTS
(parsing & colouring run in separate OS (parsing & colouring run in separate OS threads)threads)
– Syntax ColoringSyntax Coloring– Accurate source location info in GHC’s Accurate source location info in GHC’s
internal abstract syntaxinternal abstract syntax– Support in GHC to build GHC as a packageSupport in GHC to build GHC as a package– Error messages in Error messages in taskbartaskbar
![Page 52: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/52.jpg)
© VHS/VHS-AM Team
Current StatusCurrent Status
• VHS-AM Team:VHS-AM Team:– Assignment Manager integrationAssignment Manager integration through through
Basic project support and Basic project support and compile/build/run cyclecompile/build/run cycle
– Brace matchingBrace matching– Prototypes of method tips (a.k.a. Prototypes of method tips (a.k.a.
“function” tips), quick info, complete-“function” tips), quick info, complete-wordword
– GHCi Integration (in the works)GHCi Integration (in the works)
• Krasimir: full project support (in the works)Krasimir: full project support (in the works)
![Page 53: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/53.jpg)
© VHS/VHS-AM Team
ResultsResults
• Working Integration of Haskell to Working Integration of Haskell to Assignment ManagerAssignment Manager
• (Partial) Integration of Haskell to (Partial) Integration of Haskell to VS.NETVS.NET
• VS plugin available soonVS plugin available soon
![Page 54: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/54.jpg)
© VHS/VHS-AM Team
Future WorkFuture Work
• Extend Integration of Haskell to Extend Integration of Haskell to VS.NET, through Better Project VS.NET, through Better Project support, Help, Module Browser etc.support, Help, Module Browser etc.
• design decisions on how to design decisions on how to integrate/expose existing compiler as integrate/expose existing compiler as an APIan API
• design decisions on how to integrate design decisions on how to integrate VS hooks into GHC parserVS hooks into GHC parser
• Haskell compilation and interop with Haskell compilation and interop with CLR/VS.NET: CLR/VS.NET: Integrating Haskell to .NET using RotorIntegrating Haskell to .NET using Rotor
![Page 55: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/55.jpg)
© VHS/VHS-AM Team
Project MembersProject Members• VHS-AM TeamVHS-AM Team
– André SantosAndré Santos– André FurtadoAndré Furtado– Mauro AraújoMauro Araújo– Marden MenezesMarden Menezes
• VHS ProjectVHS Project– Simon Marlow, MSRSimon Marlow, MSR– Krasimir AngelovKrasimir Angelov– The VHS-AM TeamThe VHS-AM Team
![Page 56: © VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team alms@cin.ufpe.br.](https://reader036.fdocuments.net/reader036/viewer/2022062313/56649ce35503460f949afa7c/html5/thumbnails/56.jpg)
© VHS/VHS-AM Team
Integrating Haskell with Visual Integrating Haskell with Visual Studio Assignment ManagerStudio Assignment Manager
Questions?Questions?
www.cin.ufpe.br/~haskell/vhs-amwww.cin.ufpe.br/~haskell/vhs-am