Generic Haskell Where to start from. Issues Touched Language Ideas Tools Pitfalls.

Slides:



Advertisements
Similar presentations
Pat Langley Computational Learning Laboratory Center for the Study of Language and Information Stanford University, Stanford, California
Advertisements

Software Engineering Key construction decisions Design challenges.
Introduction to Compilation of Functional Languages Wanhe Zhang Computing and Software Department McMaster University 16 th, March, 2004.
Lecture 1 Introduction to the ABAP Workbench
CS 355 – Programming Languages
Classes and Object- Oriented... tMyn1 Classes and Object-Oriented Programming The essence of object-oriented programming is that you write programs in.
Domain Specific Embedded Languages Lecture 2, Designing and Using Combinators John Hughes.
CPSC Compiler Tutorial 9 Review of Compiler.
1/18 CS 693/793 Lecture 09 Special Topics in Domain Specific Languages CS 693/793-1C Spring 2004 Mo, We, Fr 10:10 – 11:00 CH 430.
1 SWE Introduction to Software Engineering Lecture 22 – Architectural Design (Chapter 13)
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
COMP205 Comparative Programming Languages Part 1: Introduction to programming languages Lecture 3: Managing and reducing complexity, program processing.
Program Flow Charting How to tackle the beginning stage a program design.
Program Flow Charting How to tackle the beginning stage a program design.
The Structure of the GNAT Compiler. A target-independent Ada95 front-end for GCC Ada components C components SyntaxSemExpandgigiGCC AST Annotated AST.
Compilers and Interpreters. Translation to machine language Every high level language needs to be translated to machine code There are different ways.
Introducing HaskellLight Rijk-Jan, Arjan, Daan, Martijn L.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Introduction To C++ Programming 1.0 Basic C++ Program Structure 2.0 Program Control 3.0 Array And Structures 4.0 Function 5.0 Pointer 6.0 Secure Programming.
Introduction 01_intro.ppt
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
C Programming language
November 1, 2006IU DLP Brown Bag : Fall Data Integrity and Document- centric XML Using Schematron for Managing Text Collections Dazhi Jiao, Tamara.
Dan Johnson.  Functional language that started development in  Committee designed language  Pure and Lazy  Compiled or Interpreted  Named after.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Computer Concepts 2014 Chapter 12 Computer Programming.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Csound. a language for describing sound. General History. Developed by Barry Vercoe at MIT. Extended by too many people to mention. Based initially on.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
SYNTAX ANALYSIS & ERROR RECOVERY By: Sarthak Swaroop.
SIMO SIMulation and Optimization ”New generation forest planning system” Antti Mäkinen & Jussi Rasinmäki Dept. of Forest Resource Management.
Compiler design Lecture 1: Compiler Overview Sulaimany University 2 Oct
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
ISBN Chapter 3 Describing Semantics.
Chapter 3 Part II Describing Syntax and Semantics.
Syntax and Semantics CIS 331 Syntax: the form or structure of the expressions, statements, and program units. Semantics: the meaning of the expressions,
Introduction to Compiling
SIMO Python/XML Simulator Current situation 28/10/2005 SIMO Seminar Antti Mäkinen Dept. of Forest Resource Management / University of Helsinki.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
LanguageLab A Meta-modelling Environment Terje Gjøsæter and Andreas Prinz, University of Agder, Norway SDL Forum 2015, Berlin, Germany.
 Programming - the process of creating computer programs.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Chap. 7, Syntax-Directed Compilation J. H. Wang Nov. 24, 2015.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
FUNCTIONAL PROGRAMING AT WORK - HASKELL AND DOMAIN SPECIFIC LANGUAGES Dr. John Peterson Western State Colorado University.
Ganga/Dirac Data Management meeting October 2003 Gennady Kuznetsov Production Manager Tools and Ganga (New Architecture)
Application architectures Advisor : Dr. Moneer Al_Mekhlafi By : Ahmed AbdAllah Al_Homaidi.
Visual Linker ADD presentation. slide 2  Project Overview And Vision  Project System View  The System Life Cycle  Data Model and.
Functional Programming
Visit for more Learning Resources
PRINCIPLES OF COMPILER DESIGN
Chapter 5- Assembling , Linking, and Executing Programs
Types for Programs and Proofs
Sparkle a functional theorem prover
Software Life Cycle Models
Presentation by Julie Betlach 7/02/2009
and Executing Programs
ENERGY 211 / CME 211 Lecture 15 October 22, 2008.
INTRODUCTION TO COMPILERS (Pavan)
Chapter 10: Compilers and Language Translation
Functional Programming and Haskell
Functional Programming and Haskell
Presentation transcript:

Generic Haskell Where to start from

Issues Touched Language Ideas Tools Pitfalls

Language Ideas Truely generic programming Better class system Better error messages More “first classness” Better programming environments

Better Type System F2? Type inference wherever possible “No religion” approach Polymorphic recursion Accept non-termination of compiler Polymorphic parameters Existential types

Better class system Current system is worn out Overloading should be programmable Classes as first class objects API for type system?

Better Error Messages Current error messages of Hugs are below standard –Sometimes at the wrong place –Sometimes uninformative –Sometimes just too large –Not user programmable

More “First Classness” Modules Classes Types?

Tools we have created or are creating Parser Combinator Library Attribute Grammar System Pretty Printing Combinators Library for user definable syntax (small)

Parser Combinator Library Quite adequate Furher development in details of usage Basic interface is stable Research on explanation of what is going on Convert into parser generator (Vladimir Costas)

Attribute Grammar System (Current) No reason not to use it Provides modularity of language definitions Not written in itself (to be done) Error messages can be improved Support for list like structures

Attribute Grammar System (Arthur Baars) Strictification optimisations Transformations, while also transforming attribution rules Supporting different views Flexible to extend for newly encountered situations. Programmable patterns

Pretty Printing Combinators Can be used in editors and unparsings Provide insight in language design Editor construction (Martijn Schrage)

LRC (editor generator, history)) Can be used Is written in the wrong language Editor generation is laborious Works and is useable! Memoisation is supported

User defineable Syntax BExpr_And (BExpr_Or x y) (BExpr_Not (BExpr_And x y) ) => "either" x "or" y BExpr_Or (BExpr_Not x) y => "(" x "->" y ")"

Overall Goals Everything nicely documented Integrated documentation and motivation Usable, user friendly system Student proof and student digestable Lecturing material

Error Messages (Bastaan Heeren) Locate most probable error source Provide useful feedback Provide as much feedback as possible

Implementation Partial evaluation needed for sufficient speed Framework for global analyses needed Code generation for different machines through code generator generators

Pitfalls Algol68 syndrom –Do not try to include everything Perform many small experiments Just in time programming Extreme programming