Heat An Interactive Development Environment for Learning & Teaching Haskell

Similar documents
Heat An Interactive Development Environment for Learning & Teaching Haskell Draft

Kent Academic Repository

A Brief Haskell and GHC Refresher

NetBeans Tutorial. For Introduction to Java Programming By Y. Daniel Liang. This tutorial applies to NetBeans 6, 7, or a higher version.

Using Eclipse for Java. Using Eclipse for Java 1 / 1

Getting started with Hugs on Linux

Getting started with Hugs on Linux

Eclipse CDT Tutorial. Eclipse CDT Homepage: Tutorial written by: James D Aniello

Jerry Cain Handout #5 CS 106AJ September 30, Using JSKarel

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented

Code::Blocks Student Manual

CSc 372. Comparative Programming Languages. 4 : Haskell Basics. Department of Computer Science University of Arizona

CSc 372 Comparative Programming Languages. 4 : Haskell Basics

Eclipse Tutorial. For Introduction to Java Programming By Y. Daniel Liang

Supplement H.1: JBuilder X Tutorial. For Introduction to Java Programming, 5E By Y. Daniel Liang

Introduction To 64 Bit Windows Assembly Programming Epub Gratuit

C++ Support Classes (Data and Variables)

The Road to CCSv4. Status Update

CS 140 Programming with Objects

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, January 2018

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS

1 Introduction to MARS

The Perl Debugger. Avoiding Bugs with Warnings and Strict. Daniel Allen. Abstract

2 Haskell. Haskell (629) 59. Haskell. B. Curry. 1.2, 1.3, Haskell 98 [16] 1. Haskell. Haskell. ( Haskell.

WRITING CONSOLE APPLICATIONS IN C

Senthil Kumaran S

POOSL IDE Installation Manual

Introduction to C/C++ Programming

Supplement II.B(1): JBuilder X Tutorial. For Introduction to Java Programming By Y. Daniel Liang

CS108 Software Systems: UNIX. Fall 2011

Chapter 2 Basic Elements of C++

CS Prof J.P.Morrison

Tutorial (Unix Version)

Programming Concepts: IDEs, Debug. Paulo Penteado. (

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Haskell Programming

CS260 Intro to Java & Android 04.Android Intro

CS520 Setting Up the Programming Environment for Windows Suresh Kalathur. For Windows users, download the Java8 SDK as shown below.

C++ Style Guide. 1.0 General. 2.0 Visual Layout. 3.0 Indentation and Whitespace

MEAP Edition Manning Early Access Program Get Programming with Java Version 1

Zend Studio has the reputation of being one of the most mature and powerful

Scientific Computing

Code::Blocks Student Manual

Software Development 1 Advanced > Task X: NetBeans IDE

..to the Berlin BAU Software Lab! Let's have two interesting weeks together! (c)schmiedecke C# and.net

QuakeCoRE OpenSees Training Workshop 2017 Introduction

CSc 520. Principles of Programming Languages 11: Haskell Basics

ECE2049 Embedded Computing in Engineering Design. Lab #0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio

CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer

Java Style Guide. 1.0 General. 2.0 Visual Layout. Dr Caffeine

Compiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7

int n = 10; int sum = 10; while (n > 1) { sum = sum + n; n--; } cout << "The sum of the integers 1 to 10 is " << sum << endl;

IBM C Rational Functional Tester for Java. Download Full Version :

This is a combination of a programming assignment and ungraded exercises

II. Compiling and launching from Command-Line, IDE A simple JAVA program

COPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition

Integrated Software Environment. Part 2

Creating a new CDC policy using the Database Administration Console

Mehran Sahami Handout #5 CS 106A September 27, 2017 Downloading Eclipse

Mobile App:IT. Methods & Classes

Getting Started With NetLogo

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG

Defining Functions. CSc 372. Comparative Programming Languages. 5 : Haskell Function Definitions. Department of Computer Science University of Arizona

Java Programming. Price $ (inc GST)

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find

Static Contract Checking for Haskell

Unit 13. Linux Operating System Debugging Programs

Mehran Sahami Handout #5 CS 106A September 26, 2018 Downloading Eclipse

Source-Based Trace Exploration Work in Progress

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

DOWNLOAD PDF VISUAL STUDIO 2008 LEARNING GUIDE

Exercises: Instructions and Advice

At the shell prompt, enter idlde

Laboratory Assignment #3 Eclipse CDT

An Eclipse-based Integrated Environment for Developing Executable Structural Operational Semantics Specifications

Remote VPN Remote access for personal devices

Analysis Tool Project

Semester 2, 2018: Lab 1

LAB #5 Intro to Linux and Python on ENGR

Educational Fusion. Implementing a Production Quality User Interface With JFC

Getting Started with Python

Weekly Discussion Sections & Readings

Notepad++ The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++

Procedural Programming

Getting Started with Eclipse for Java

Slide 1 CS 170 Java Programming 1 Duration: 00:00:49 Advance mode: Auto

Getting Acquainted with Office 2007 Table of Contents

PDF Accessibility Guide

Last Updated: FRC 2019 BETA

Using Eclipse and Karel

SQL Server Standard Edition 2017 Installation Guide. By Engin Calisir, 06/22/2018

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

Introduction to Haskell

FrontPage 98 Quick Guide. Copyright 2000 Peter Pappas. edteck press All rights reserved.

NSIGHT ECLIPSE EDITION

User Guide for the TITAN Designer for the Eclipse IDE

Today. Review. Unix as an OS case study Intro to Shell Scripting. What is an Operating System? What are its goals? How do we evaluate it?

Power Editing: Hoxie Ackerman. April 1, Building a Productive Editing Environment for Yourself

Transcription:

Heat An Interactive Development Environment for Learning & Teaching Haskell Olaf Chitil 11 th September 2008 Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 1 / 17

The Problem two separate tools: editor + interpreter edit save switch load - cycle tiresome easy to forget save or load command-line considered old-fashioned Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 2 / 17

Emacs and IDEs Emacs, gvim etc. with Haskell mode not fully integrated (evaluate wrt. old program) too many confusing features GUI not nice enough Professional IDE: Eclipse, Visual Studio too complex Haskell modes not mature hard to install Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 3 / 17

Requirements 1 integrates editor and interpreter console within a single user interface Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs 3 simple and fool-proof: only features that support students beginning to learn Haskell Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs 3 simple and fool-proof: only features that support students beginning to learn Haskell 4 reliable Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs 3 simple and fool-proof: only features that support students beginning to learn Haskell 4 reliable 5 runs on all major platforms used by our students and staff (Windows, OS X, Linux, Solaris) Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs 3 simple and fool-proof: only features that support students beginning to learn Haskell 4 reliable 5 runs on all major platforms used by our students and staff (Windows, OS X, Linux, Solaris) 6 easy to install Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

Requirements 1 integrates editor and interpreter console within a single user interface 2 provides a graphical user interface similar to professional IDEs 3 simple and fool-proof: only features that support students beginning to learn Haskell 4 reliable 5 runs on all major platforms used by our students and staff (Windows, OS X, Linux, Solaris) 6 easy to install 7 small source code and easy to maintain Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 4 / 17

The Solution: Heat Editor for a single module syntax-highlighting matching brackets Status:? Interpreter console Overview highlight prompt & errors error: source line & explanation defined types, functions,... Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 5 / 17

Checking Properties Design recipe (How To Design Programs) 1 purpose in comment 2 type declaration 3 example properties 4 actual definition 5 test -- yield square of given number square :: Float -> Float square x = x * x prop_square1 = square 2 == 4 prop_square2 = square 0 == 0 prop_square3 = square (-4) == 16 Only Boolean unit tests, general QuickCheck later. Properties separate in overview pane and automatic testing. Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 7 / 17

Composing Pictures Simon Thompson The Craft of Functional Programming A small library for making pictures compositionally: data Picture -- abstract horse :: Picture rotate90, flipv, fliph, invertcolour :: Picture -> Picture above, sidebyside, superimpose :: Picture -> Picture -> Picture ASCII art does not impress students!...##......##..#.....##...#...#...#...#...#...#...#...###.#..#...#..##...#...#......#...#......#..#......#.#......##... Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 9 / 17

Graphics via PDF generate a PDF file automatically start PDF viewer separate from Heat Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 10 / 17

Implementation Written by final year project students. 15.000 lines of Java jedit syntax package lexing for syntax-highlighting Hugs as separate process communication only via textual input/output stream no interrupt signal: restart Hugs process new basic Haskell parser Hugs :browse and :info only works for valid Haskell graphics in PDF incremental graphics model of PDF poor fit Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 11 / 17

Student Feedback It s a great idea and much easier than using Hugs itself. However it was inconsistent on the Mac and a total disaster on Vista which with the number of both on campus (CS specifically) is not very useful. Preferences saving between sessions didn t work very well and the pop-up help did it s own thing.it has issues with line breaks too. Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 12 / 17

Evaluation Reliability (spurious bug) main issue Syntax error in expression (unexpected ;, possibly due to bad layout) is all that needs to be said. Fool-proof? Enter full path of Hugs... Expect standard GUI features shortcut keys, OS X shortcuts, automatic indentation,... Missing or awkward features not a problem no interrupt; expression input box Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 13 / 17

Why Not Use the Glasgow Haskell Compiler? GHC s error messages more detailed but many messages, no stop after first mention language extensions: fst :: forall a b. (a,b) -> a use substantial indentation error location confusing, if in input expression GHC is harder to install GHC does not have built-in observe (future debugging) Still, Heat should support GHC in future. Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 14 / 17

Big Role Model: DrScheme Unfortunately relies on close integration of IDE with compiler and runtime system. Different language levels with different error messages highly desirable, especially language with limited classes and without partial application. Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 15 / 17

Future Extensions Not many! include library documentation Haddock: extensible, standard handwritten: Prelude for novices (several levels?) spelling help support full QuickCheck debugging via observing functions Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 16 / 17

Conclusions small but effective wrapper IDE possible reliability most important, not features Availability Heat 1.1 http://www.cs.kent.ac.uk/teaching/resources/haskell/heat.html Heat 3.0 real soon... watch Haskell mailing list Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 17 / 17