Improving type-error messages in functional languages
|
|
- Shana Willis
- 7 years ago
- Views:
Transcription
1 Improving type-error messages in Bastiaan Heeren Universiteit Utrecht January 5, 200
2 Contents Introduction Constraints Type inference rules Solving constraints Solving inconsistencies Future work Conclusion 2
3 Introduction Example of an erroneous expression: f = \x -> case x of 0 -> False -> one 2 -> two 3 -> three Error message produced by Hugs: ERROR example.hs (line ): Type error in case expression *** Term : one *** Type : String *** Does not match : Bool 3
4 Introduction Problems in current type inferencing algorithms: local approach error message is only a brief explanation only one error message is reported Improvements: global approach a better explanation of the type conflict multiple error messages are reported 4
5 Expression language Expression language: data Expr = Variable String Literal String Apply Expr Expr Lambda String Expr Case Expr Alternatives Let String Expr Expr data Alternatives = Empty Alternative Expr Expr Alternatives no syntactic sugar simplified let expression 5
6 Type language Type language: data Type = TVar Int TCon String TApp Type Type type arrow ( ) is represented as a constant no quantifiers 6
7 Constraints Equality constraint: represents the unification of two types for example : a Int b Instance constraint: represents an instantiation of a (polymorphic) type contains a set of monomorphic variables for example : a< Int b 7
8 Type inference rules [VAR] [LIT] aisfresh - x : a, [x a] - literal : primitive type, no constraints no constraints [APP] aisfresh - f : tf, Af - e : te, Ae [ABS] aisfresh - e : t, A - (f e) : a, Af Ae - (\x e) : a t,a\ x tf te a {s a (x s) A} 8
9 Type inference rules [CASE] aandbarefresh - p : tp, Ap - pi :tpi,api for i [..n] - ei :tei,aei for i [..n] - (case p of p e; ;pn en;) : b, Ap (Ae -Ap) (Aen -Apn) a tp a tpi b tei {s t (x s) Api,(x t) Aei } for i [..n] for i [..n] for i [..n] 9
10 Type inference rules [LET] aisfresh - e : te, Ae - b : tb, Ab - (let x = e in b) : tb, (Ae Ab) \ x a te {s a (x s) Ae } {s<m a (x s) Ab } where M=Ae\x 0
11 Example [VAR] [VAR] - i : t3, [i t3] - i : t4, [i t4] - ii:,[i t3, i t4] [APP] t3 t4 - x :, [x ] - \x x:t, [VAR] [ABS] t - let i = \x xinii:, t3 < t2 t4 < t2 t2 t [LET]
12 Solving constraints Equality graph: vertex edge : type variable or type constant : equality constraint Each type variable occurs exactly once in a vertex Initial state for the expression let i = \x xinii result type errors set of constraints : t : t2 t #3 : t3 t4 : t3 < t2 #5 : t4 < t2 equality graph t t2 t3 t4 2
13 Solving constraints Equality constraints: a rule for each combination TCon c TCon c2 if c and c2 are equal then remove else error TCon c TVar v addanedgebetweencandv TCon c TApp t t2 error TVar v TVar v2 addanedgebetweenvandv2 TApp t t2 TApp t3 t4 split constraint into (t t3) and (t2 t4) TVar v TApp t t2 decomposition of v 3
14 Solving constraints result type t3 errors set of constraints : t Int Int... equality graph t t2 t3 #7 t4 Substitution: [t := t6, t2 := t7 t8, t3 := t9 t0, t4 := t t2] result type set of constraints equality graph t9 t0 : t6 Int Int... t7 t6 t8 errors t9 #7 t t0 #7 t2 substituted 4
15 Solving constraints Instance constraints: t <M t2 is changed into an equality constraint as soon as t2 is fixed (a fixed type does not change during the rest of the computation) A type is fixed if all the type variables it contains are fixed. A type variable is fixed if: - it does not occur in an equality constraint - it does not occur on the left hand side of an instance constraint - all the type variables in its connected component are fixed 5
16 Example simplify #3 #5 t t2 t3 t3 t4 < < t t4 t2 t2 t t3 t2 t4 6
17 Example decompose #3 #5 t t2 t3 t3 t4 < < t t4 t2 t2 t t3 t2 substitution t2 := t6 t7 t4 7
18 Example simplify #3 #5 t t6 t7 t3 t3 t4 < < t t4 t6 t7 t6 t7 t t3 t7 t6 substitution t2 := t6 t7 t4 8
19 Example instantiate #3 #5 t t6 t7 t3 t3 t4 < < t t4 t6 t7 t6 t7 t t3 t7 t6 t4 9
20 Example decompose #3 #5 t t6 t7 t3 t3 t4 t t4 t8 t8 t9 t9 t t3 t7 t6 t8 substitution t9 t4 t3 := t0 t 20
21 Example simplify #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 t t7 t6 t0 t8 t substitution t9 t4 t3 := t0 t 2
22 Example simplify #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 t t7 t6 t9 t0 t8 t #3 #3 t4 22
23 Example decompose #3 #5 t t6 t7 t0 t t0 t t4 t t4 t8 t8 t9 t9 substitution t t7 t4 := t2 t3 := t4 t8 := t6 t7 t0 := t8 t9 t := t20 t2 t6 t9 t0 t8 t #3 #3 t4 23
24 Example simplify #3 #5 t t6 t7 t0 t t0 t t2 t3 t4 t t4 t8 t8 t9 t9 t t8 t6 t20 #3 #3 t7 t6 t2 t4 substitution t4 := t2 t3 := t4 t8 := t6 t7 t0 := t8 t9 t := t20 t2 t9 t9 t7 t2 #3 #3 t3 24
25 Example result type #3 #5 t t6 t7 t0 t t0 t t2 t3 t4 t t4 t8 t8 t9 t9 a a t t8 t6 t20 #3 #3 t7 t6 t2 t4 #5 t9 #5 t9 t7 t2 #3 #3 t3 25
26 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool wrong paths: {,,#3,} {,,#3,} decompose paths: {,,} {,,} {,#3,} 26
27 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool wrong paths: {,,#3,} {,,#3,} decompose paths: {,,} {,,} {,#3,} minimal set {,} {,} {,} {,#3} {,} {#3,} 27
28 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good good paths: {,} {,} {,} {,} {,#3} {,} {#3,} 28
29 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good trust 5 5 each constraint has a trust value {,} {,} {,} {,#3} {,} {#3,} 29
30 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set #3 good trust 5 5 cost ( + good) * trust {,} {,} {,} {,#3} {,} {#3,} 30
31 Solving inconsistencies Int : t Int Int t #3 t2 t3 Int Bool removal cost minimal set total cost #3 good trust 5 5 cost remove the constraints in the set with the lowest total cost {,} {,} {,} {,#3} {,} {#3,}
32 Solving inconsistencies Int t t2 t3 Int Bool the inconsistency is removed 32
33 Future work Explicit typing Type synonyms Type classes Kindinferencing Type tracing Advanced output BANE 33
34 Conclusion Left-to-right bias is completely removed Several heuristics increase the exactness of the error message considerably Possibility to add more heuristics 34
Chapter 7: Functional Programming Languages
Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language
More informationThe Clean programming language. Group 25, Jingui Li, Daren Tuzi
The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was
More informationAdding GADTs to OCaml the direct approach
Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1
More informationAP CALCULUS AB 2007 SCORING GUIDELINES (Form B)
AP CALCULUS AB 2007 SCORING GUIDELINES (Form B) Question 4 Let f be a function defined on the closed interval 5 x 5 with f ( 1) = 3. The graph of f, the derivative of f, consists of two semicircles and
More informationTop Quality Type Error Messages
Top Quality Type Error Messages Top Kwaliteit Typeringsfoutmeldingen (met een samenvatting in het Nederlands) Proefschrift ter verkrijging van de graad van doctor aan de Universiteit Utrecht op gezag van
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationTypes, Polymorphism, and Type Reconstruction
Types, Polymorphism, and Type Reconstruction Sources This material is based on the following sources: Pierce, B.C., Types and Programming Languages. MIT Press, 2002. Kanellakis, P.C., Mairson, H.G. and
More informationSatisfiability Checking
Satisfiability Checking SAT-Solving Prof. Dr. Erika Ábrahám Theory of Hybrid Systems Informatik 2 WS 10/11 Prof. Dr. Erika Ábrahám - Satisfiability Checking 1 / 40 A basic SAT algorithm Assume the CNF
More informationMAT12X Intermediate Algebra
MAT12X Intermediate Algebra Workshop I - Exponential Functions LEARNING CENTER Overview Workshop I Exponential Functions of the form y = ab x Properties of the increasing and decreasing exponential functions
More information3.1 Solving Systems Using Tables and Graphs
Algebra 2 Chapter 3 3.1 Solve Systems Using Tables & Graphs 3.1 Solving Systems Using Tables and Graphs A solution to a system of linear equations is an that makes all of the equations. To solve a system
More informationTECHNICAL UNIVERSITY OF CRETE DATA STRUCTURES FILE STRUCTURES
TECHNICAL UNIVERSITY OF CRETE DEPT OF ELECTRONIC AND COMPUTER ENGINEERING DATA STRUCTURES AND FILE STRUCTURES Euripides G.M. Petrakis http://www.intelligence.tuc.gr/~petrakis Chania, 2007 E.G.M. Petrakis
More informationWhy? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
More informationOutline Basic concepts of Python language
Data structures: lists, tuples, sets, dictionaries Basic data types Examples: int: 12, 0, -2 float: 1.02, -2.4e2, 1.5e-3 complex: 3+4j bool: True, False string: "Test string" Conversion between types int(-2.8)
More informationShortest Inspection-Path. Queries in Simple Polygons
Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote B 05-05 April 2005 Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote Institut für Informatik,
More informationChapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
More informationTypeScript for C# developers. Making JavaScript manageable
TypeScript for C# developers Making JavaScript manageable Agenda What is TypeScript OO in TypeScript Closure Generics Iterators Asynchronous programming Modularisation Debugging TypeScript 2 What is TypeScript
More informationCompiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
More informationAdvanced Functional Programming (9) Domain Specific Embedded Languages
Advanced Functional Programming (9) Domain Specific Embedded Languages Advanced Functional Programming (9) Domain Specific Embedded Languages, Universiteit Utrecht http://www.cs.uu.nl/groups/st/ February
More informationProgramming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!
Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)
More informationTemporal Logics. Computation Tree Logic
Temporal Logics CTL: definition, relationship between operators, adequate sets, specifying properties, safety/liveness/fairness Modeling: sequential, concurrent systems; maximum parallelism/interleaving
More informationSection IV.1: Recursive Algorithms and Recursion Trees
Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller
More informationObfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES neyrolles@quarkslab.com Serge GUELTON sguelton@quarkslab.com Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
More information6.2 Permutations continued
6.2 Permutations continued Theorem A permutation on a finite set A is either a cycle or can be expressed as a product (composition of disjoint cycles. Proof is by (strong induction on the number, r, of
More informationNetwork (Tree) Topology Inference Based on Prüfer Sequence
Network (Tree) Topology Inference Based on Prüfer Sequence C. Vanniarajan and Kamala Krithivasan Department of Computer Science and Engineering Indian Institute of Technology Madras Chennai 600036 vanniarajanc@hcl.in,
More informationSection 9.5: Equations of Lines and Planes
Lines in 3D Space Section 9.5: Equations of Lines and Planes Practice HW from Stewart Textbook (not to hand in) p. 673 # 3-5 odd, 2-37 odd, 4, 47 Consider the line L through the point P = ( x, y, ) that
More informationType Inference for First-Class Messages with Match-Functions
Type Inference for First-Class Messages with Match-Functions Paritosh Shroff Scott F. Smith Johns Hopkins University {pari, scott}@cs.jhu.edu Abstract Messages that can be treated as first-class entities
More informationeach college c i C has a capacity q i - the maximum number of students it will admit
n colleges in a set C, m applicants in a set A, where m is much larger than n. each college c i C has a capacity q i - the maximum number of students it will admit each college c i has a strict order i
More informationCassandra. References:
Cassandra References: Becker, Moritz; Sewell, Peter. Cassandra: Flexible Trust Management, Applied to Electronic Health Records. 2004. Li, Ninghui; Mitchell, John. Datalog with Constraints: A Foundation
More informationBasic Polymorphic Typechecking
Science of Computer Programming 8/2 (April 1987) Revised 6/21/88 Basic Polymorphic Typechecking Luca Cardelli AT&T Bell Laboratories, Murray Hill, NJ 07974 (current address: DEC SRC, 130 Lytton Ave, Palo
More informationRecursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD
1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design
More informationIntroduction to type systems
Introduction to type systems p. 1/5 Introductory Course on Logic and Automata Theory Introduction to type systems Polyvios.Pratikakis@imag.fr Based on slides by Jeff Foster, UMD Introduction to type systems
More informationFuld Skolerapport for Søhusskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 9. med reference Tilsvarende klassetrin i kommunen
Side 1 af 41 Side 2 af 41 Side 3 af 41 Side 4 af 41 Side 5 af 41 Side 6 af 41 Side 7 af 41 Side 8 af 41 Side 9 af 41 Side 10 af 41 Side 11 af 41 Side 12 af 41 Side 13 af 41 Side 14 af 41 Side 15 af 41
More informationFuld Skolerapport for Hunderupskolen, i Odense kommune, for skoleår 2013/2014 for klassetrin(ene) 7. med reference Tilsvarende klassetrin i kommunen
Side 1 af 43 Side 2 af 43 Side 3 af 43 Side 4 af 43 Side 5 af 43 Side 6 af 43 Side 7 af 43 Side 8 af 43 Side 9 af 43 Side 10 af 43 Side 11 af 43 Side 12 af 43 Side 13 af 43 Side 14 af 43 Side 15 af 43
More informationCS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
More informationTHREE DIMENSIONAL GEOMETRY
Chapter 8 THREE DIMENSIONAL GEOMETRY 8.1 Introduction In this chapter we present a vector algebra approach to three dimensional geometry. The aim is to present standard properties of lines and planes,
More informationSoftware Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program.
Software Testing Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program. Testing can only reveal the presence of errors and not the
More informationHow to Write a Checker in 24 Hours
How to Write a Checker in 24 Hours Clang Static Analyzer Anna Zaks and Jordan Rose Apple Inc. What is this talk about? The Clang Static Analyzer is a bug finding tool It can be extended with custom checkers
More informationTranslating Generalized Algebraic Data Types to System F
Translating Generalized Algebraic Data Types to System F Martin Sulzmann and Meng Wang {sulzmann,wangmeng}@comp.nus.edu.sg School of Computing, National University of Singapore S16 Level 5, 3 Science Drive
More informationSoftware Testing & Verification 2013/2014 Universiteit Utrecht
Software Testing & Verification 2013/2014 Universiteit Utrecht 2nd Jul. 2014, 13:30-16:30, BBL 001 Lecturer: Wishnu Prasetya You are allowed to bring along the Appendix of the LN. Part I [3pt (6 0.5)]
More informationSynthesizing Proof Planning Methods and ΩANTS Agents from Mathematical Knowledge
Synthesizing Proof Planning Methods and ΩANTS Agents from Mathematical Knowledge Serge Autexier, Dominik Dietrich dietrich@ags.uni-sb.de Saarland University, Saarbrücken MKM 06 p.1 Motivation Knowledge-based
More informationDeterministic Discrete Modeling
Deterministic Discrete Modeling Formal Semantics of Firewalls in Isabelle/HOL Cornelius Diekmann, M.Sc. Dr. Heiko Niedermayer Prof. Dr.-Ing. Georg Carle Lehrstuhl für Netzarchitekturen und Netzdienste
More informationAspect-Oriented Programming with Type Classes
Aspect-Oriented Programming with Type Classes Martin Sulzmann School of Computing, National University of Singapore S16 Level 5, 3 Science Drive 2, Singapore 117543 sulzmann@comp.nus.edu.sg Meng Wang School
More informationImproving Knowledge-Based System Performance by Reordering Rule Sequences
Improving Knowledge-Based System Performance by Reordering Rule Sequences Neli P. Zlatareva Department of Computer Science Central Connecticut State University 1615 Stanley Street New Britain, CT 06050
More informationWell-Separated Pair Decomposition for the Unit-disk Graph Metric and its Applications
Well-Separated Pair Decomposition for the Unit-disk Graph Metric and its Applications Jie Gao Department of Computer Science Stanford University Joint work with Li Zhang Systems Research Center Hewlett-Packard
More informationEconomics 326: Duality and the Slutsky Decomposition. Ethan Kaplan
Economics 326: Duality and the Slutsky Decomposition Ethan Kaplan September 19, 2011 Outline 1. Convexity and Declining MRS 2. Duality and Hicksian Demand 3. Slutsky Decomposition 4. Net and Gross Substitutes
More informationReducing Clocks in Timed Automata while Preserving Bisimulation
Reducing Clocks in Timed Automata while Preserving Bisimulation Shibashis Guha Chinmay Narayan S. Arun-Kumar Indian Institute of Technology Delhi {shibashis, chinmay, sak}@cse.iitd.ac.in arxiv:1404.6613v2
More informationAbsolute Value Equations and Inequalities
Key Concepts: Compound Inequalities Absolute Value Equations and Inequalities Intersections and unions Suppose that A and B are two sets of numbers. The intersection of A and B is the set of all numbers
More informationComplexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar
Complexity Theory IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar Outline Goals Computation of Problems Concepts and Definitions Complexity Classes and Problems Polynomial Time Reductions Examples
More informationPlan-Space Search. Searching for a Solution Plan in a Graph of Partial Plans
Plan-Space Search Searching for a Solution Plan in a Graph of Partial Plans Literature Malik Ghallab, Dana Nau, and Paolo Traverso. Automated Planning Theory and Practice, chapter 2 and 5. Elsevier/Morgan
More informationJedd: A BDD-based Relational Extension of Java
Jedd: A BDD-based Relational Extension of Java Ondřej Lhoták Laurie Hendren Sable Research Group, School of Computer Science McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca ABSTRACT
More informationPython Programming: An Introduction To Computer Science
Python Programming: An Introduction To Computer Science Chapter 8 Booleans and Control Structures Python Programming, 2/e 1 Objectives æ To understand the concept of Boolean expressions and the bool data
More informationUnix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, 2008. 1 Introduction 1. 2 Invoking Shell Scripts 2
Unix Shell Scripts Norman Matloff July 30, 2008 Contents 1 Introduction 1 2 Invoking Shell Scripts 2 2.1 Direct Interpretation....................................... 2 2.2 Indirect Interpretation......................................
More informationA Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
More informationGREATEST COMMON DIVISOR
DEFINITION: GREATEST COMMON DIVISOR The greatest common divisor (gcd) of a and b, denoted by (a, b), is the largest common divisor of integers a and b. THEOREM: If a and b are nonzero integers, then their
More informationTranslating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language
Translation Translating to Java Introduction to Computer Programming The job of a programmer is to translate a problem description into a computer language. You need to be able to convert a problem description
More informationGCE. Computing. Mark Scheme for January 2011. Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods
GCE Computing Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods Mark Scheme for January 2011 Oxford Cambridge and RSA Examinations OCR (Oxford Cambridge and RSA) is a leading
More informationNote: This App is under development and available for testing on request. Note: This App is under development and available for testing on request. Note: This App is under development and available for
More informationIteration CHAPTER 6. Topic Summary
CHAPTER 6 Iteration TOPIC OUTLINE 6.1 while Loops 6.2 for Loops 6.3 Nested Loops 6.4 Off-by-1 Errors 6.5 Random Numbers and Simulations 6.6 Loop Invariants (AB only) Topic Summary 6.1 while Loops Many
More informationSeminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina stefano.martina@stud.unifi.it
Seminar Path planning using Voronoi diagrams and B-Splines Stefano Martina stefano.martina@stud.unifi.it 23 may 2016 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International
More informationExtending Dependencies with Conditions
Extending Dependencies with Conditions Loreto Bravo University of Edinburgh lbravo@inf.ed.ac.uk Wenfei Fan Univ. of Edinburgh & Bell Labs wenfei@inf.ed.ac.uk Shuai Ma University of Edinburgh sma1@inf.ed.ac.uk
More informationJournal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML
Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Xavier Leroy École Normale Supérieure Michel Mauny INRIA Rocquencourt Abstract Objects with dynamic types allow the integration
More informationPart I. Multiple Choice Questions (2 points each):
Part I. Multiple Choice Questions (2 points each): 1. Which of the following is NOT a key component of object oriented programming? (a) Inheritance (b) Encapsulation (c) Polymorphism (d) Parallelism ******
More informationA production system monitor for parallel computers
Carnegie Mellon University Research Showcase @ CMU Computer Science Department School of Computer Science 1977 A production system monitor for parallel computers Charles L.(Charles Lanny) Forgy Carnegie
More informationChapter 2: Algorithm Discovery and Design. Invitation to Computer Science, C++ Version, Third Edition
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition Objectives In this chapter, you will learn about: Representing algorithms Examples of algorithmic problem
More informationCOMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing
COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing The scanner (or lexical analyzer) of a compiler processes the source program, recognizing
More informationPOLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/
More informationChapter 7: Relational Database Design
Chapter 7: Relational Database Design Pitfalls in Relational Database Design Decomposition Normalization Using Functional Dependencies Normalization Using Multivalued Dependencies Normalization Using Join
More informationSpark. Fast, Interactive, Language- Integrated Cluster Computing
Spark Fast, Interactive, Language- Integrated Cluster Computing Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael Franklin, Scott Shenker, Ion Stoica UC
More informationAPPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION
1 APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION Validation: Are we building the right product? Does program meet expectations of user? Verification: Are we building the product right?
More informationEuler Paths and Euler Circuits
Euler Paths and Euler Circuits An Euler path is a path that uses every edge of a graph exactly once. An Euler circuit is a circuit that uses every edge of a graph exactly once. An Euler path starts and
More informationFunctional Dependencies and Finding a Minimal Cover
Functional Dependencies and Finding a Minimal Cover Robert Soulé 1 Normalization An anomaly occurs in a database when you can update, insert, or delete data, and get undesired side-effects. These side
More informationThree Effective Top-Down Clustering Algorithms for Location Database Systems
Three Effective Top-Down Clustering Algorithms for Location Database Systems Kwang-Jo Lee and Sung-Bong Yang Department of Computer Science, Yonsei University, Seoul, Republic of Korea {kjlee5435, yang}@cs.yonsei.ac.kr
More informationCHAPTER 4 LINEAR SCHEDULING METHOD (LSM) AND ITS APPLICATIONS
33 CHAPTER 4 LINEAR SCHEDULING METHOD (LSM) AND ITS APPLICATIONS 4.1 BASICS OF LINEAR SCHEDULING The LSM is a graphical technique in which the locations or the length of the linear project is indicated
More informationIntroduction to Programming (in C++) Loops. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC
Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Example Assume the following specification: Input: read a number N > 0 Output:
More informationExample. Introduction to Programming (in C++) Loops. The while statement. Write the numbers 1 N. Assume the following specification:
Example Introduction to Programming (in C++) Loops Assume the following specification: Input: read a number N > 0 Output: write the sequence 1 2 3 N (one number per line) Jordi Cortadella, Ricard Gavaldà,
More informationMathematics 205 HWK 6 Solutions Section 13.3 p627. Note: Remember that boldface is being used here, rather than overhead arrows, to indicate vectors.
Mathematics 205 HWK 6 Solutions Section 13.3 p627 Note: Remember that boldface is being used here, rather than overhead arrows, to indicate vectors. Problem 5, 13.3, p627. Given a = 2j + k or a = (0,2,
More informationName: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
More informationSection 8.8. 1. The given line has equations. x = 3 + t(13 3) = 3 + 10t, y = 2 + t(3 + 2) = 2 + 5t, z = 7 + t( 8 7) = 7 15t.
. The given line has equations Section 8.8 x + t( ) + 0t, y + t( + ) + t, z 7 + t( 8 7) 7 t. The line meets the plane y 0 in the point (x, 0, z), where 0 + t, or t /. The corresponding values for x and
More informationThe Needle Programming Language
The Needle Programming Language The Needle Programming Language 1 What is Needle? Needle is an object-oriented functional programming language with a multimethod-based OO system, and a static type system
More informationTest case design techniques I: Whitebox testing CISS
Test case design techniques I: Whitebox testing Overview What is a test case Sources for test case derivation Test case execution White box testing Flowgraphs Test criteria/coverage Statement / branch
More informationMassachusetts Institute of Technology Department of Electrical Engineering and Computer Science
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 7 Scanner Parser Project Wednesday, September 7 DUE: Wednesday, September 21 This
More informationOn Testing Image Processing Applications With Statistical Methods
On Testing Image Processing Applications With Statistical Methods Johannes Mayer Abteilung Angewandte Informationsverarbeitung Universität Ulm D 89069 Ulm mayer@mathematik.uni-ulm.de Abstract: Testing
More informationOutline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators
Conditional Statements For computer to make decisions, must be able to test CONDITIONS IF it is raining THEN I will not go outside IF Count is not zero THEN the Average is Sum divided by Count Conditions
More informationIntroduction to Python for Text Analysis
Introduction to Python for Text Analysis Jennifer Pan Institute for Quantitative Social Science Harvard University (Political Science Methods Workshop, February 21 2014) *Much credit to Andy Hall and Learning
More informationAn Introduction to The A* Algorithm
An Introduction to The A* Algorithm Introduction The A* (A-Star) algorithm depicts one of the most popular AI methods used to identify the shortest path between 2 locations in a mapped area. The A* algorithm
More informationThe Goldberg Rao Algorithm for the Maximum Flow Problem
The Goldberg Rao Algorithm for the Maximum Flow Problem COS 528 class notes October 18, 2006 Scribe: Dávid Papp Main idea: use of the blocking flow paradigm to achieve essentially O(min{m 2/3, n 1/2 }
More informationAlgebra I Vocabulary Cards
Algebra I Vocabulary Cards Table of Contents Expressions and Operations Natural Numbers Whole Numbers Integers Rational Numbers Irrational Numbers Real Numbers Absolute Value Order of Operations Expression
More informationA Constraint Programming based Column Generation Approach to Nurse Rostering Problems
Abstract A Constraint Programming based Column Generation Approach to Nurse Rostering Problems Fang He and Rong Qu The Automated Scheduling, Optimisation and Planning (ASAP) Group School of Computer Science,
More informationY. Xiang, Constraint Satisfaction Problems
Constraint Satisfaction Problems Objectives Constraint satisfaction problems Backtracking Iterative improvement Constraint propagation Reference Russell & Norvig: Chapter 5. 1 Constraints Constraints are
More informationOutput: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
More informationProgramming and Reasoning with Side-Effects in IDRIS
Programming and Reasoning with Side-Effects in IDRIS Edwin Brady 19th October 2014 Contents 1 Introduction 3 1.1 Hello world............................................. 3 1.2 Outline................................................
More informationForm Validation. Server-side Web Development and Programming. What to Validate. Error Prevention. Lecture 7: Input Validation and Error Handling
Form Validation Server-side Web Development and Programming Lecture 7: Input Validation and Error Handling Detecting user error Invalid form information Inconsistencies of forms to other entities Enter
More informationMath 2280 - Assignment 6
Math 2280 - Assignment 6 Dylan Zwick Spring 2014 Section 3.8-1, 3, 5, 8, 13 Section 4.1-1, 2, 13, 15, 22 Section 4.2-1, 10, 19, 28 1 Section 3.8 - Endpoint Problems and Eigenvalues 3.8.1 For the eigenvalue
More informationSOLUTION Trial Test Grammar & Parsing Deficiency Course for the Master in Software Technology Programme Utrecht University
SOLUTION Trial Test Grammar & Parsing Deficiency Course for the Master in Software Technology Programme Utrecht University Year 2004/2005 1. (a) LM is a language that consists of sentences of L continued
More informationUniversity of Toronto Department of Electrical and Computer Engineering. Midterm Examination. CSC467 Compilers and Interpreters Fall Semester, 2005
University of Toronto Department of Electrical and Computer Engineering Midterm Examination CSC467 Compilers and Interpreters Fall Semester, 2005 Time and date: TBA Location: TBA Print your name and ID
More informationSolutions. Updated 2013-12-13. 1 of 6
CHALMERS UNIVERSITY OF TECHNOLOGY Department of Computer Science and Engineering Examination in Databases, TDA357/DIT620 Saturday 19 December 2009, 08:30-12:30 Solutions Updated 2013-12-13 1 of 6 Question
More informationDATABASE NORMALIZATION
DATABASE NORMALIZATION Normalization: process of efficiently organizing data in the DB. RELATIONS (attributes grouped together) Accurate representation of data, relationships and constraints. Goal: - Eliminate
More informationSolving Linear Equations in One Variable. Worked Examples
Solving Linear Equations in One Variable Worked Examples Solve the equation 30 x 1 22x Solve the equation 30 x 1 22x Our goal is to isolate the x on one side. We ll do that by adding (or subtracting) quantities
More information