Visual Studio Haskell - PowerPoint PPT Presentation

About This Presentation
Title:

Visual Studio Haskell

Description:

Existing Haskell IDEs. Some of these have some Haskell support: syntax colouring ... Language support tends to be unreliable, because these environments are not ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 18
Provided by: simonm1
Category:
Tags: haskell | ides | studio | visual

less

Transcript and Presenter's Notes

Title: Visual Studio Haskell


1
Visual Studio / Haskell
  • Simon Marlow
  • Krasimir Angelov
  • others

2
Background
  • We all use a development environment of one kind
    or another
  • Emacs
  • Vi
  • Notepad
  • WinHugs

3
Existing Haskell IDEs
  • Some of these have some Haskell support
  • syntax colouring
  • indentation (hard in Haskell!)
  • jump to errors
  • menu of top-level declarations
  • jump to definition
  • interactive compilation/evaluation
  • display type of an identifier

4
Problems
  • Language support tends to be unreliable, because
    these environments are not using a real Haskell
    front-end. eg. Colouring support in Emacs is
    really bad.
  • Different language flavours Haskell98FFI,
    hierarchical modules, CPP, literate.
  • Jumping to an error often misses (compilers dont
    have good source loc info).
  • No real compile support
  • Many, many, many more things an IDE can do

5
What were doing
  • Integrating GHC with Visual Studio to make a
    decent Haskell IDE
  • Specifying a programatic interface to GHC so that
    it can be re-used in other IDE-like contexts.

6
Background Visual Studio
  • Development shell, with several language plugins
    VC, VC, VJ, VB.
  • Very rich feature set
  • Lots of support for language integration
  • Projects multi-file applications/libraries
  • Solutions multiple projects
  • Debugging
  • Integrated documentation, context-sensitive help
    etc.
  • Lots of support for automation/extension/customisa
    tion.
  • free access to the integration APIs
  • Windows only

7
Status of Haskell Plugin
  • We have
  • Syntax colouring
  • Parsing/renaming/type-checking as you type (in a
    separate thread)
  • accurate indication of erroneous subexpressions
  • beginnings of project support

8
Demo
9
Features we want
  • (in rough order of increasing difficulty)
  • Bracket matching (inc. let/in)
  • Drop-down menu of top-level decls
  • Outlining
  • Jump to definition (or docs for library fns)
  • Easy access to documentation
  • Code model (programatic access to the source code
    from a macro)
  • Type tooltips
  • Type of subexpression

10
More features we want
  • Integrate with HaRe
  • Project support
  • Multi-module support (automatically discover
    dependencies, build support etc.)
  • Library-infrastructure support (import/export
    library infrastructure metadata gives a nice way
    to package ship a project)
  • Auto-Haddocking for a project
  • Integrated FFI tools??
  • .NET integration??
  • Debugging??
  • GUI Builder??

11
Implementation
  • Visual Studio Integration Program
  • set of COM APIs for integrating new functionality
    into VS
  • Language support in the editor
  • Project
  • Tools
  • freely available SDK
  • APIs are highly detailed, flexible HUGE
  • Babel (Daan Leijen) provides a simpler
    abstraction layer for integrating simple language
    support

12
The obligatory block diagram
VSIP COM interfaces
Babel COM interfaces
Visual Studio
Babel
Haskell Service
C/C
Haskell
Direct to VSIP for project support
13
What weve done so far
  • Infrastructure
  • Use H/Direct for accessing COM APIs (about 15
    bugs in H/Direct found so far!)
  • Multi-threading support in GHCs RTS (parsing
    colouring run in separate OS threads)
  • Accurate source location info in GHCs internal
    abstract syntax (phew)
  • Support in GHC to build GHC as a package
  • Krasimir basic project support, more to come

14
GHC as a library
  • What interface should GHC export?
  • Needs to support these front-ends
  • GHCi
  • --make
  • -e
  • Visual Studio
  • others
  • Tell me what you need

15
Conclusion
  • What features would you like to see in an IDE?
    What would make it compelling enough for you to
    use?
  • Well ship GHC as a package soon.
  • VS plugin will be available at some point (help
    needed!)

16
GHCs API
data ModuleGraph ModSummary data ModSummary
- contains module name, location, imports data
CmState cmInit GhcMode -gt DynFlags -gt IO
CmState -- Stuff for -make, basic GHCi
operation cmDepAnal CmState -gt FilePath -gt
IO ModuleGraph cmLoad CmState -gt
ModuleGraph -gt IO (CmState, Bool,
String) cmUnload CmState -gt IO CmState --
Visual Studio -- - Project knows the
ModuleGraph -- - Dont need to fully compile
modules data ErrMsg cmAnalyse CmState -gt
ModuleGraph -gt Module -gt IO (CmState,
Either ErrMsg ModuleInfo) cmModuleChanged
CmState gt Module -gt IO CmState
17
-- Should we provide access to the complete
abstract syntax -- (perhaps in a simplified form?
THSyntax? IfaceSyn?) or just -- accessors? data
SrcLoc data SrcSpan typeOfId SrcLoc -gt
ModuleInfo -gt Maybe Type defnOfId SrcLoc -gt
ModuleInfo -gt Maybe SrcLoc topDecls ModuleInfo
-gt (SrcSpan, String)
Write a Comment
User Comments (0)
About PowerShow.com