Information technology - Programming languages - Prolog - Part 1: General Core

Size: px
Start display at page:

Download "Information technology - Programming languages - Prolog - Part 1: General Core"

Transcription

1 Information technology - Programming languages - Prolog - Part 1: General Core DRAFT TECHNICAL CORRIGENDUM 1 Draft technical corrigendum 1 to International Standard :1995 (E) was prepared Joint Technical Committee ISO/IEC JTC 1, Information technology NOTE - Some text in Mathematical font is expressed using Latex convention, i.e. surrounded with $ signs mapping mapping is used with a second meaning in the standard: add a second definition A function from a value of one type $T$ to a value of another type $R$ denoted $T \rightarrow R$ most general unifier (MGU) instance example because instance is not being used with the meaning defined in partial list A variable A variable. second argument second argument read-term end token. end token Axiom : Axiom: if x > 0 then x is the positive square root of x else undefined. Axiom: if x 0 then x is the non-negative square root of x else undefined Term -- double quoted list notation If a double quoted list represents an atom (i.e. the Prolog flag double_quotes has value atom ), the priority of the term should depend on whether or not the atom is an operator as in ISO/IEC states that the priority of an atom represented a double quoted list is always zero. the syntax rule the four syntax rules: term = double quoted list ; Abstract: l dql Priority: 0 Condition: Prolog flag double_quotes has value chars term = double quoted list ; Abstract: l dql Priority: 0 Condition: Prolog flag double_quotes has value code atom = double quoted list ; Abstract: a dql Priority: n Condition: Prolog flag double_quotes has value atom Condition: a is an operator atom = double quoted list ; Abstract: a dql Priority: 0 Condition: Prolog flag double_quotes has value atom Condition: a is not an operator c) 2) 2) if XN is the... 2) XN is the the first sentence: Tables 27 and 28 show the execution stack before and after executing the control construct ','(First, second). Tables 27 and 28 show the execution stack before and after executing the control construct ','(First, Second). Table 35 line 2 (else(w), CP) 1

2 (Else, CP) last example ';'('->'(!,fail), true), true). ';'(('->'(!,fail), true), true) Add additional errors: i) The value of an argument Culprit is not a member of the set $I$ - type_error(integer, Culprit) j) The value of an argument Culprit is not a member of the set $F$ - type_error(float, Culprit) example no. 35 shows these errors are required i) Twice replace imp_dep_atom Imp_dep_atom d) Chooses the first element of the list L Chooses the first element of the list L, unifies it with the term clause(head,body) Similarly for f) abolish/1: Description In the note, replace procedures identified procedure identified example no. 20 [a, b, f(b), f(a)] [a, b, f(a), f(b)] put_te/1 put_te(84). If the current output stream contains [..., 113,119,101,114,116] put_te(st_o, 84). If the stream associated with st_o contains [..., 113,119,101,114,116] put_te(84). If the current output stream contains [..., 113,119,101,114,84] put_te(st_o, 116). If the stream associated with st_o contains [..., 113,119,101,114,116] examples no. 2 and 3 st_o st_i example no. 6 (last) The current input stream is left with position pastend-of-stream. The current input stream is left in an undefined state. (Cf NOTE 2) d) Chooses a member of $Set_Op$ and the goal succeeds Chooses a member of $Set_Op$, unifies it with (Priority, Op_specifier, Operator), and the goal succeeds atom_chars/2 The sixth example in is atom_chars('north', ['N X]). Succeeds, unifying X with ['o', r', t', h']. but the procedural description does not permit this (c) : c) Else if Atom is an atom whose name is the sequence of characters $Seq$ and List unifies with a list L such that every element of L is the one-char atom whose name is the corresponding element of $Seq$, then the goal succeeds, atom_codes/2 The error noted in implies a similar change in this procedure (c) : c) Else if Atom is an atom whose name is the sequence of characters $Seq$ and List unifies with a list L such that every element of L is the character code of the corresponding element of $Seq$, then the goal succeeds, 2

3 Add a note pointing to the definition of F* ( ) example no. 21 '/'(7, 35) '//'(7, 35) example no. 23 '/'(140, 3+11) '//'(140, 3+11) example no example no. 48 float(5/3) float(5//3) example no example no example no. 5, example no example no. 6, example no. 6 type(integer,foo) type_error(evaluable,foo/0)!"#$%& '$%()*+(, - %. / #8%-'6$.2099:%;,< 3

4 The following points indicate possible problems with the standard, but do not specify corrections or cures Quoted characters The text does not define what character is denoted a double quote char or back quote char which is a single quoted character. Similar omissions exist for double quoted character and back quoted character. 6.5 It shall be implementation defined for each extended character whether it is a graphic char, or an alphanumeric char, or a solo char, This classification is incomplete in the following sense: - It is not enough to classify an extended character as an <<alphanumeric char>>, one has to also tell if it is a <<small letter char>>, <<capital letter char>> (e.g. NOTE 2 of 6.5 speaks of <<extended small letter char>>). - The notion of <<solo char>> is unfortunate: it contains characters that form a <<name token>> alone (! and ;), and punctuation characters, which cannot be part of an unquoted <<name token>>. Classifying an extended character as a <<solo char>> does not make this character usable as a token alone, because there is no syntactic rule for this (! and ; are included explicitly in <<name token>>). Along the lines of the Quintus/SICStus Prolog syntax, perhaps the category of <<solo char>> should be changed to mean only <<cut char>> and <<semicolon char>>, and a new category <<punctuation char>> is introduced to contain all other characters presently classified as solo. And there should be a non-terminal <<solo token>>, replacing <<semicolon token>> and <<cut token>> in <<name token>>, which is defined as: solo token = solo char ; The standard should let the user classify an extended character placing it in exactly one of the following character categories: graphic char small letter char capital letter char solo char layout char In addition to these, the notion of <<char>> covers the categories <<decimal digit char>>, <<underline char>>, <<punctuation char>> and <<meta char>> - It may not Annex A (informative) Issues still to be resolved make sense to allow the user to classify extended characters into one of these categories. Perhaps it may be useful to have a category <<other char>>, initially empty; any extended character classified as such would only be allowed in (double, back) quoted tokens. A wide character extension to SICStus Prolog allows the user to plug in arbitrary character sets and define, through C hook functions, the character-type mapping. This is a function taking a character code, and returning a constant denoting one of the above character categories. This extension is part of the SICStus Prolog 3.8 release. I hope the term <<implementation defined>> in the Prolog standard does allow such delegation of definitions to the user through hook functions. 6.5 and The distinction between PCS (Processor character set) and C (the set of characters) is quite confusing at first reading. It does make sense, for example, in SICStus Prolog there is a member of PCS with character_code 0, which is not a character (not a member of C) - as there cannot be a one-char atom representing a character with code 0. Giving an example of this kind would help the uninitiated reader. Also replacing the name <<character>> a qualified form, e.g. <<Prolog character>> would help. This is because currently the <<processor character set>> has members which are <<character>>s, and other members which are not - how would you call the letter things"? For example in the previous paragraph, referring to the character with code 0 was quite cumbersome, because formally the thing with code 0 is not a character , and The use of the built-in predicates <'/2 and =='/2 in defining the term order is not very elegant. Perhaps using the mathematical relation <, and the notion of <<identical terms>> would be preferable A reference to the definition of <<predicate indicator sequence>> and <<predicate indicator list>> in would be quite helpful here. Also perhaps these notions should be included in chapter 3. 4

5 7.6 Perhaps it would make sense to explicitly mention that an implementation may add other conversion steps, as an extension. The goal_expansion mechanism of SICStus Prolog is an example of such extensions a) Where is the definition and purpose of the <<callable term representing the built-in predicate BP>>. Also the <<MGU>> produced here is never used. Table 17 Why is the cut-parent of true shown to be equal to N-2? c) It might benefit the user if the Culprit in the error term here could be more precise than the whole argument of call/1. Maybe call((...,1)) raising type_error(callable, 1) should be allowed the standard example no. 6 This example should not output 3. Table 25, Table 26 The cut-parent of the first subgoal of the execution state with index CP is shown as CP - this should be different o) The introduction of a local cut in front of the Else part is artificial c) This says that a throw without an applicable catch causes a system error. This error condition is different from other errors, because in this situation it does not make sense to apply the rules concerning the effect of an error: says that the current goal should be replaced the goal throw(error(system_error,imp_def)). Perhaps it should be left implementation defined what should happen with uncaught exceptions e) It does not seem right to replace CP the cut-parent of each execution state g) The text R is used without definition NOTE The current operators do not affect output when there is a write option numbervars(true). This seems to be garbled Writing a term No method is provided for writing a curly bracketed term (6.3.6) with curly brackets d) Some implementations, e.g. SICStus, write <<.>> as <<'.'>> when quoted(true) is in force, to avoid confusion with end token. It might be good if the standard allowed this NOTE 4 (b) See the remark to c) A list of the error conditions and associated error terms for the built-in predicate Is the order of this list relevant? It should not be. If two or more error conditions apply, any of them could be raised a standard-conforming processor. Perhaps this issue is worth clarifying Consider The error conditions and examples for a bootstrapped built-in predicate are included in the appropriate clauses of the general built-in predicate. This is quite cumbersome, especially that error conditions use the argument names which appear only later, and only as part of the Prolog definitions. I would suggest to list the heads of the bootstrapped predicates earlier, so that the argument naming becomes more visible. An example of this: j) mentions the name <<Code>> which only appears buried in Prolog code on the next page in c) Maybe replace 2) and 3) with 2) (H:-B) unifies with (Head:-Body) examples no. 5, 10 and 12 Mention that the order of solutions is undefined. 5

6 examples no. 22, 23 and 24 (last three) Replacing <<Xs>> <<Ys>> might make these examples easier to understand get_code/1 should be defined in terms of get_code/2, just as it is done for get_char: get_code(code) :- current_input(s), get_code(s, Code) d) and j) Error condition j) makes little sense, given error condition d) example no. 4 The example is not fortunate, as the error permission_error(output, text_stream, user_output) would be also a valid outcome (see also the remark to 8.1.3) examples no These should raise the type_error(evaluable, foo/0) error, according to c) examples no. 25 and 26 '/'(7, -3) '//'(7, -3) And replace '/'(-7, 3) '//'(-7, 3) Perhaps it is worth adding extending the text Evaluates to an implementation dependent value which is either -2 or I suggest to add an error condition, so that current_op(_, 0, _) raises the error type_error(atom, 0) Maybe an error condition has to be added so that if atom_codes is called, e.g. as atom_codes(x, [foo]), it should raise a type_error(integer, foo) The error conditions of atom_codes and number_codes seem not to be in sync, and similarly for..._chars. Example:?- catch(atom_codes(f, [foo]), error(e,_), true). no.?- catch(number_codes(1, [foo]), error(e,_), true). E = type_error(integer,foo)? yes Explain the need for the last sentence before the NOTE: The approximate-addition function should satisfy last but one line round_r->z(x) = entier(x+1/2)>> Is it not the case that the IEEE FP standard allows other forms of rounding, e.g. rounding an integer+0.5 to the nearest *even* integer? If so, could this be allowed in standard Prolog? 6

7 Annex B (informative) Editorial notes Unusual characters Check the following characters are correctly printed Square root symbol: Greater than or equal symbol: Background These faults were noted after preparing for publication the text of ISO/IEC :1995 Prolog: Part 1 - General Core, and subsequent lists of errors noted Roger Scowen, Peter Szeredi, Pierre Deransart, and Ali Ed-Dbali. Roger Scowen (editor) 9 Birchwood Grove, Hampton, Middlesex United Kingdom TW12 3DU Telephone: +44 (0) roger.scowen@npl.co.uk October - November 2005 Document history 2006 April 15: Two further corrections are noted (3.125, 3.148). The structure is amended to be based on ISO/IEC :2004/Cor.1:2005 (E). Posted to Jonathan Hodgson for distribution and balloting within SC22. December 1: Posted to Jonathan Hodgson for distribution to, and discussion within JTC 1 SC 22 WG October 26: Copied from c:\rs0\prolog\da58.tex, and stored in c:\rs5\standard\st77.doc. Examples and sources are removed. 7

Information technology Programming languages Prolog Part 1: General core

Information technology Programming languages Prolog Part 1: General core INTERNATIONAL STANDARD ISO/IEC 13211-1:1995 TECHNICAL CORRIGENDUM 3 Published 2017-07 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

WG11 Members. From: Editors of Language Independent Arithmetic, Part 1

WG11 Members. From: Editors of Language Independent Arithmetic, Part 1 To: WG11 Members From: Editors of Language Independent Arithmetic, Part 1 Title: Draft Response to International Comments from Czechoslovakia, France, Japan, the United Kingdom and the United States. The

More information

ISO/IEC INTERNATIONAL STANDARD. Information technology - Programming languages - Prolog - Part 1: General core

ISO/IEC INTERNATIONAL STANDARD. Information technology - Programming languages - Prolog - Part 1: General core INTERNATIONAL STANDARD ISO/IEC 13211-1 First edition 1995-06-01 Information technology - Programming languages - Prolog - Part 1: General core Technologies de I informa tion - Langages de programmation

More information

Part I Logic programming paradigm

Part I Logic programming paradigm Part I Logic programming paradigm 1 Logic programming and pure Prolog 1.1 Introduction 3 1.2 Syntax 4 1.3 The meaning of a program 7 1.4 Computing with equations 9 1.5 Prolog: the first steps 15 1.6 Two

More information

On 17 June 2006, the editor provided the following list via an to the convener:

On 17 June 2006, the editor provided the following list via an  to the convener: ISO/IEC JTC 1/SC 22/WG 9 N 471 List of AIs Approved per Resolution 50-8 James W. Moore, Convener 23 June 2006 Resolution 50-8 reads as follows: "Noting WG9's approval of the amendment to ISO/IEC 8652 and

More information

Information technology Programming languages Prolog Part 1: General core

Information technology Programming languages Prolog Part 1: General core INTERNATIONAL STANDARD ISO/IEC 13211-1:1995 TECHNICAL CORRIGENDUM 2 Published 2012-02-15 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

ISO. International Organization for Standardization. ISO/IEC JTC 1/SC 32 Data Management and Interchange WG4 SQL/MM. Secretariat: USA (ANSI)

ISO. International Organization for Standardization. ISO/IEC JTC 1/SC 32 Data Management and Interchange WG4 SQL/MM. Secretariat: USA (ANSI) ISO/IEC JTC 1/SC 32 N 0736 ISO/IEC JTC 1/SC 32/WG 4 SQL/MM:VIE-006 January, 2002 ISO International Organization for Standardization ISO/IEC JTC 1/SC 32 Data Management and Interchange WG4 SQL/MM Secretariat:

More information

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going

More information

ISO/IEC INTERNATIONAL STANDARD. Information technology - Syntactic metalanguage - Extended BNF

ISO/IEC INTERNATIONAL STANDARD. Information technology - Syntactic metalanguage - Extended BNF INTERNATIONAL STANDARD ISO/IEC First edition 1996-l -l 5 Information technology - Syntactic metalanguage - Extended BNF Technologies de / information - Mbtalangage syntaxique - BNF &endu Reference number

More information

Programming Languages Third Edition

Programming Languages Third Edition Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand

More information

Terminology in ISO/IEC 2382 and some SC22 standards

Terminology in ISO/IEC 2382 and some SC22 standards Terminology in ISO/IEC 2382 and some SC22 standards Introduction and summary SC22 resolution 03-18 reads, JTC1/SC22 gratefully accepts the offer of Roger Scowen to investigate and provide SC22 with a report

More information

SOFTWARE ENGINEERING DESIGN I

SOFTWARE ENGINEERING DESIGN I 2 SOFTWARE ENGINEERING DESIGN I 3. Schemas and Theories The aim of this course is to learn how to write formal specifications of computer systems, using classical logic. The key descriptional technique

More information

tuprolog with exceptions

tuprolog with exceptions tuprolog with exceptions Enrico Denti December 16, 2010 Abstract This document describes the new support for ISO Prolog exceptions in tuprolog 2.2. Please notice that this document is not intended to replace

More information

INTERNATIONAL TELECOMMUNICATION UNION

INTERNATIONAL TELECOMMUNICATION UNION INTERNATIONAL TELECOMMUNICATION UNION ITU-T X.680 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU Corrigendum 1 (06/99) SERIES X: DATA NETWORKS AND OPEN SYSTEM COMMUNICATIONS OSI networking and system

More information

ISO/IEC PDTS 21425, C++ Extensions for Ranges, National Body Comments

ISO/IEC PDTS 21425, C++ Extensions for Ranges, National Body Comments Document No: WG21 N4694 Date: 2017-08-10 Project: Programming Language C++ Extensions for Ranges References: Reply to: Casey Carter ISO/IEC PDTS 21425, C++ Extensions for Ranges, National

More information

Information technology Database languages SQL Part 1: Framework (SQL/Framework)

Information technology Database languages SQL Part 1: Framework (SQL/Framework) INTERNATIONAL STANDARD ISO/IEC 9075-1:2003 TECHNICAL CORRIGENDUM 2 Published 2007-04-15 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

Chapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy

Chapter 16. Logic Programming. Topics. Unification. Resolution. Prolog s Search Strategy. Prolog s Search Strategy Topics Chapter 16 Logic Programming Summary (resolution, unification, Prolog search strategy ) Disjoint goals The cut operator Negative goals Predicate fail Debugger / tracer Lists 2 Resolution Resolution

More information

JME Language Reference Manual

JME Language Reference Manual JME Language Reference Manual 1 Introduction JME (pronounced jay+me) is a lightweight language that allows programmers to easily perform statistic computations on tabular data as part of data analysis.

More information

THIS DOCUMENT IS STILL UNDER STUDY AND SUBJECT TO CHANGE. IT SHOULD NOT BE USED FOR REFERENCE PURPOSES.

THIS DOCUMENT IS STILL UNDER STUDY AND SUBJECT TO CHANGE. IT SHOULD NOT BE USED FOR REFERENCE PURPOSES. Final Committee Draft ISO/IEC FCD 14957 Date: 2007-12-23 Reference number: ISO/JTC 1/SC 32N1678 Supersedes document SC 32N1399 THIS DOCUMENT IS STILL UNDER STUDY AND SUBJECT TO CHANGE. IT SHOULD NOT BE

More information

DEMO A Language for Practice Implementation Comp 506, Spring 2018

DEMO A Language for Practice Implementation Comp 506, Spring 2018 DEMO A Language for Practice Implementation Comp 506, Spring 2018 1 Purpose This document describes the Demo programming language. Demo was invented for instructional purposes; it has no real use aside

More information

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic WG14 N1161 Rationale for TR 24732 Extension to the programming language C Decimal Floating-Point Arithmetic Contents 1 Introduction... 1 1.1 Background... 1 1.2 The Arithmetic Model... 3 1.3 The Encodings...

More information

Language Reference Manual simplicity

Language Reference Manual simplicity Language Reference Manual simplicity Course: COMS S4115 Professor: Dr. Stephen Edwards TA: Graham Gobieski Date: July 20, 2016 Group members Rui Gu rg2970 Adam Hadar anh2130 Zachary Moffitt znm2104 Suzanna

More information

Creating SQL Tables and using Data Types

Creating SQL Tables and using Data Types Creating SQL Tables and using Data Types Aims: To learn how to create tables in Oracle SQL, and how to use Oracle SQL data types in the creation of these tables. Outline of Session: Given a simple database

More information

Chapter 2 Basic Elements of C++

Chapter 2 Basic Elements of C++ C++ Programming: From Problem Analysis to Program Design, Fifth Edition 2-1 Chapter 2 Basic Elements of C++ At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class Discussion

More information

Scheme Quick Reference

Scheme Quick Reference Scheme Quick Reference COSC 18 Fall 2003 This document is a quick reference guide to common features of the Scheme language. It is not intended to be a complete language reference, but it gives terse summaries

More information

Java Bytecode (binary file)

Java Bytecode (binary file) Java is Compiled Unlike Python, which is an interpreted langauge, Java code is compiled. In Java, a compiler reads in a Java source file (the code that we write), and it translates that code into bytecode.

More information

ISO/IEC JTC 1/SC 32 N 2482

ISO/IEC JTC 1/SC 32 N 2482 ISO/IEC JTC 1/SC 32 N 2482 Date: 2014-05-06 REPLACES: ISO/IEC JTC 1/SC 32 Data Management and Interchange Secretariat: Unit States of America (ANSI) Administer by Farance Inc. on behalf of ANSI DOCUMENT

More information

The object level in Prolog. Meta-level predicates and operators. Contents. The flow of computation. The meta level in Prolog

The object level in Prolog. Meta-level predicates and operators. Contents. The flow of computation. The meta level in Prolog Lecture 8 Meta-level predicates and operators Contents Object level vs. meta level Controlling flow of computation Checking and dismantling expressions Comparison operators The object level in Prolog Prolog

More information

ISO International Organization for Standardization ISO/IEC JTC 1/SC 32 Data Management and Interchange WG 4 SQL Multimedia and Application Packages

ISO International Organization for Standardization ISO/IEC JTC 1/SC 32 Data Management and Interchange WG 4 SQL Multimedia and Application Packages ISO/IEC JTC 1/SC 32/WG 4: TXL-016r2 INCITS H2-2005-107r2 April 21, 2005 Authoritative file: txl016-topo-concepts-the-sequel.pdf Number of Pages: 18 ISO International Organization for Standardization ISO/IEC

More information

Scheme Quick Reference

Scheme Quick Reference Scheme Quick Reference COSC 18 Winter 2003 February 10, 2003 1 Introduction This document is a quick reference guide to common features of the Scheme language. It is by no means intended to be a complete

More information

CHAPTER 3: CORE PROGRAMMING ELEMENTS

CHAPTER 3: CORE PROGRAMMING ELEMENTS Variables CHAPTER 3: CORE PROGRAMMING ELEMENTS Introduction to Computer Science Using Ruby A variable is a single datum or an accumulation of data attached to a name The datum is (or data are) stored in

More information

Prolog Programming. Lecture Module 8

Prolog Programming. Lecture Module 8 Prolog Programming Lecture Module 8 Prolog Language Prolog is unique in its ability to infer facts from the given facts and rules. In Prolog, an order of clauses in the program and goals in the body of

More information

2 Sets. 2.1 Notation. last edited January 26, 2016

2 Sets. 2.1 Notation. last edited January 26, 2016 2 Sets Sets show up in virtually every topic in mathematics, and so understanding their basics is a necessity for understanding advanced mathematics. As far as we re concerned, the word set means what

More information

SC22/WG11 N401. WG11 agrees that the current French title of LIA-1 is incorrect, and urges the ITTF to adopt the title submitted by AFNOR.

SC22/WG11 N401. WG11 agrees that the current French title of LIA-1 is incorrect, and urges the ITTF to adopt the title submitted by AFNOR. SC22/WG11 N401 --------------------------------------------- Resolution of International Comments on LIA-1 --------------------------------------------- May 1994 There were 18 votes to approve LIA-1 and

More information

Functional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute

Functional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute Functional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute Module # 02 Lecture - 03 Characters and Strings So, let us turn our attention to a data type we have

More information

1 Lexical Considerations

1 Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

More information

ISO/IEC JTC1/SC2/WG2 N 2490

ISO/IEC JTC1/SC2/WG2 N 2490 ISO/IEC JTC1/SC2/WG2 N 2490 Date: 2002-05-21 ISO/IEC JTC1/SC2/WG2 Coded Character Set Secretariat: Japan (JISC) Doc. Type: Disposition of comments Title: Proposed Disposition of comments on SC2 N 3585

More information

ISO/IEC JTC 1/SC 32/WG2 N1792

ISO/IEC JTC 1/SC 32/WG2 N1792 ISO/IEC JTC 1/SC 3/WG N179 Date: 013-05-9 REPLACES: ISO/IEC JTC 1/SC 3 Data Management and Interchange Secretariat: United States America (ANSI) Administered by Farance Inc. on behalf ANSI DOCUMENT TYPE

More information

Tokens, Expressions and Control Structures

Tokens, Expressions and Control Structures 3 Tokens, Expressions and Control Structures Tokens Keywords Identifiers Data types User-defined types Derived types Symbolic constants Declaration of variables Initialization Reference variables Type

More information

System Verilog Tagged Unions and Pattern Matching

System Verilog Tagged Unions and Pattern Matching System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,

More information

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic Rationale for TR 24732 Extension to the programming language C Decimal Floating-Point Arithmetic Contents 1 Introduction... 1 1.1 Background... 1 1.2 The Arithmetic Model...3 1.3 The Encodings... 3 2 General...

More information

Expr Language Reference

Expr Language Reference Expr Language Reference Expr language defines expressions, which are evaluated in the context of an item in some structure. This article describes the syntax of the language and the rules that govern the

More information

N1793: Stability of indeterminate values in C11

N1793: Stability of indeterminate values in C11 N1793: Stability of indeterminate values in C11 Robbert Krebbers and Freek Wiedijk Radboud University Nijmegen, The Netherlands Abstract. This paper document N1793 of WG 14 proposes and argues for a specific

More information

Functional Logic Programming Language Curry

Functional Logic Programming Language Curry Functional Logic Programming Language Curry Xiang Yin Department of Computer Science McMaster University November 9, 2010 Outline Functional Logic Programming Language 1 Functional Logic Programming Language

More information

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath UNIT - I Introduction to C Programming Introduction to C C was originally developed in the year 1970s by Dennis Ritchie at Bell Laboratories, Inc. C is a general-purpose programming language. It has been

More information

Typed Racket: Racket with Static Types

Typed Racket: Racket with Static Types Typed Racket: Racket with Static Types Version 5.0.2 Sam Tobin-Hochstadt November 6, 2010 Typed Racket is a family of languages, each of which enforce that programs written in the language obey a type

More information

Lecture 2: Variables and Operators. AITI Nigeria Summer 2012 University of Lagos.

Lecture 2: Variables and Operators. AITI Nigeria Summer 2012 University of Lagos. Lecture 2: Variables and Operators AITI Nigeria Summer 2012 University of Lagos. Agenda Variables Types Naming Assignment Data Types Type casting Operators Declaring Variables in Java type name; Variables

More information

POSIX-Ada BINDING RAPPORTEUR GROUP PROCEDURES

POSIX-Ada BINDING RAPPORTEUR GROUP PROCEDURES POSIX-Ada BINDING RAPPORTEUR GROUP PROCEDURES These Procedures are DRAFT until were approved by the PRG on -TBD- (expected to be February??, 20087), and WG9 and are based on ARG Procedures from the Ada

More information

ISO/IEC INTERNATIONAL STANDARD. Software and system engineering High-level Petri nets Part 1: Concepts, definitions and graphical notation

ISO/IEC INTERNATIONAL STANDARD. Software and system engineering High-level Petri nets Part 1: Concepts, definitions and graphical notation INTERNATIONAL STANDARD ISO/IEC 15909-1 First edition 2004-12-01 Software and system engineering High-level Petri nets Part 1: Concepts, definitions and graphical notation Ingénierie du logiciel et du système

More information

Programming languages Ada

Programming languages Ada INTERNATIONAL STANDARD ISO/IEC 8652:2012 TECHNICAL CORRIGENDUM 1 Published 2016-02-01 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION ORGANISATION INTERNATIONALE DE NORMALISATION INTERNATIONAL ELECTROTECHNICAL

More information

ISO/IEC JTC 1/SC 32 N 2432

ISO/IEC JTC 1/SC 32 N 2432 ISO/IEC JTC 1/SC 32 N 2432 Date: 2013-10-24 REPLACES: ISO/IEC JTC 1/SC 32 Data Management and Interchange Secretariat: United States of America (ANSI) Administered by Farance Inc. on behalf of ANSI DOCUMENT

More information

The New C Standard (Excerpted material)

The New C Standard (Excerpted material) The New C Standard (Excerpted material) An Economic and Cultural Derek M. Jones derek@knosof.co.uk Copyright 2002-2008 Derek M. Jones. All rights reserved. 1456 6.7.2.3 Tags 6.7.2.3 Tags type contents

More information

The STRIPS Subset of PDDL for the Learning Track of IPC-08

The STRIPS Subset of PDDL for the Learning Track of IPC-08 The STRIPS Subset of PDDL for the Learning Track of IPC-08 Alan Fern School of Electrical Engineering and Computer Science Oregon State University April 9, 2008 This document defines two subsets of PDDL

More information

Sketchpad Graphics Language Reference Manual. Zhongyu Wang, zw2259 Yichen Liu, yl2904 Yan Peng, yp2321

Sketchpad Graphics Language Reference Manual. Zhongyu Wang, zw2259 Yichen Liu, yl2904 Yan Peng, yp2321 Sketchpad Graphics Language Reference Manual Zhongyu Wang, zw2259 Yichen Liu, yl2904 Yan Peng, yp2321 October 20, 2013 1. Introduction This manual provides reference information for using the SKL (Sketchpad

More information

Starting with a great calculator... Variables. Comments. Topic 5: Introduction to Programming in Matlab CSSE, UWA

Starting with a great calculator... Variables. Comments. Topic 5: Introduction to Programming in Matlab CSSE, UWA Starting with a great calculator... Topic 5: Introduction to Programming in Matlab CSSE, UWA! MATLAB is a high level language that allows you to perform calculations on numbers, or arrays of numbers, in

More information

Bits, Words, and Integers

Bits, Words, and Integers Computer Science 52 Bits, Words, and Integers Spring Semester, 2017 In this document, we look at how bits are organized into meaningful data. In particular, we will see the details of how integers are

More information

The Analysis and Proposed Modifications to ISO/IEC Software Engineering Software Quality Requirements and Evaluation Quality Requirements

The Analysis and Proposed Modifications to ISO/IEC Software Engineering Software Quality Requirements and Evaluation Quality Requirements Journal of Software Engineering and Applications, 2016, 9, 112-127 Published Online April 2016 in SciRes. http://www.scirp.org/journal/jsea http://dx.doi.org/10.4236/jsea.2016.94010 The Analysis and Proposed

More information

Binary, Hexadecimal and Octal number system

Binary, Hexadecimal and Octal number system Binary, Hexadecimal and Octal number system Binary, hexadecimal, and octal refer to different number systems. The one that we typically use is called decimal. These number systems refer to the number of

More information

ISO/IEC INTERNATIONAL STANDARD. Information technology CDIF transfer format Part 3: Encoding ENCODING.1

ISO/IEC INTERNATIONAL STANDARD. Information technology CDIF transfer format Part 3: Encoding ENCODING.1 INTERNATIONAL STANDARD ISO/IEC 15475-3 First edition 2002-11-01 Information technology CDIF transfer format Part 3: Encoding ENCODING.1 Technologies de l'information Format de transfert CDIF Partie 3:

More information

Information technology Programming languages Fortran Part 1: Base language

Information technology Programming languages Fortran Part 1: Base language INTERNATIONAL STANDARD ISO/IEC 1539-1:2010 TECHNICAL CORRIGENDUM 2 Published 2013-06-01 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

ISO/IEC JTC1/SC7 /N3209

ISO/IEC JTC1/SC7 /N3209 ISO/IEC JTC1/SC7 Software and Systems Engineering Secretariat: CANADA (SCC) ISO/IEC JTC1/SC7 /N3209 2005-05-17 Document Type Title Liaison Documents Liaison statements from ITU-T SG 17 Source ITU-T SG

More information

Operational Semantics

Operational Semantics 15-819K: Logic Programming Lecture 4 Operational Semantics Frank Pfenning September 7, 2006 In this lecture we begin in the quest to formally capture the operational semantics in order to prove properties

More information

Honu. Version November 6, 2010

Honu. Version November 6, 2010 Honu Version 5.0.2 November 6, 2010 Honu is a family of languages built on top of Racket. Honu syntax resembles Java. Like Racket, however, Honu has no fixed syntax, because Honu supports extensibility

More information

On the Logical Structure of Mathematical Notation

On the Logical Structure of Mathematical Notation On the Logical Structure of Mathematical Notation Dennis S. Arnon Xerox PARC 3333 Coyote Hill Road Palo Alto, CA 94304 USA 415-494-4425; FAX: 415-494-4241 arnonqparc.xerox.com Sandra A. Mamrak Department

More information

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

Sets. Sets. Examples. 5 2 {2, 3, 5} 2, 3 2 {2, 3, 5} 1 /2 {2, 3, 5}

Sets. Sets. Examples. 5 2 {2, 3, 5} 2, 3 2 {2, 3, 5} 1 /2 {2, 3, 5} Sets We won t spend much time on the material from this and the next two chapters, Functions and Inverse Functions. That s because these three chapters are mostly a review of some of the math that s a

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Information technology MPEG systems technologies. Part 8: Coding-independent code points

Information technology MPEG systems technologies. Part 8: Coding-independent code points INTERNATIONAL STANDARD ISO/IEC 23001-8 Second edition 2016-05-01 Information technology MPEG systems technologies Part 8: Coding-independent code points Technologies de l information Technologies des systèmes

More information

Module 6. Knowledge Representation and Logic (First Order Logic) Version 2 CSE IIT, Kharagpur

Module 6. Knowledge Representation and Logic (First Order Logic) Version 2 CSE IIT, Kharagpur Module 6 Knowledge Representation and Logic (First Order Logic) 6.1 Instructional Objective Students should understand the advantages of first order logic as a knowledge representation language Students

More information

COP4020 Programming Assignment 1 - Spring 2011

COP4020 Programming Assignment 1 - Spring 2011 COP4020 Programming Assignment 1 - Spring 2011 In this programming assignment we design and implement a small imperative programming language Micro-PL. To execute Mirco-PL code we translate the code to

More information

ISO/IEC JTC 1/SC 32 N 2041a

ISO/IEC JTC 1/SC 32 N 2041a ISO/IEC JTC 1/SC 32 N 2041a Date: 2010-05-30 REPLACES: -- ISO/IEC JTC 1/SC 32 Data Management and Interchange Secretariat: United States of America (ANSI) Administered by Farance Inc. on behalf of ANSI

More information

Getting started with C++ (Part 2)

Getting started with C++ (Part 2) Getting started with C++ (Part 2) CS427: Elements of Software Engineering Lecture 2.2 11am, 16 Jan 2012 CS427 Getting started with C++ (Part 2) 1/22 Outline 1 Recall from last week... 2 Recall: Output

More information

Information technology Generic coding of moving pictures and associated audio information: Video

Information technology Generic coding of moving pictures and associated audio information: Video ITERATIOAL STADARD ISO/IEC 13818-:000 TECHICAL CORRIGEDUM Published 007-07-01 ITERATIOAL ORGAIZATIO FOR STADARDIZATIO МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGAISATIO ITERATIOALE DE ORMALISATIO ITERATIOAL

More information

Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part 1

Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part 1 Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part 1 1. Introduction Parsing is the task of Syntax Analysis Determining the syntax, or structure, of a program. The syntax is defined by the grammar rules

More information

ISO/IEC JTC 1/SC 2 N 3332/WG2 N 2057

ISO/IEC JTC 1/SC 2 N 3332/WG2 N 2057 ISO/IEC JTC 1/SC 2 N 3332/WG2 N 2057 Date: 1999-06-22 ISO/IEC JTC 1/SC 2 CODED CHARACTER SETS SECRETARIAT: JAPAN (JISC) DOC TYPE: TITLE: SOURCE: Other document National Body Comments on SC 2 N 3297, WD

More information

Information technology Document Schema Definition Languages (DSDL) Part 8: Document Semantics Renaming Language (DSRL)

Information technology Document Schema Definition Languages (DSDL) Part 8: Document Semantics Renaming Language (DSRL) INTERNATIONAL STANDARD ISO/IEC 19757-8:2008 TECHNICAL CORRIGENDUM 1 Published 2011-12-01 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

An Introduction to Subtyping

An Introduction to Subtyping An Introduction to Subtyping Type systems are to me the most interesting aspect of modern programming languages. Subtyping is an important notion that is helpful for describing and reasoning about type

More information

ISO/IEC JTC 1/SC 2 N 3354

ISO/IEC JTC 1/SC 2 N 3354 ISO/IEC JTC 1/SC 2 N 3354 Date: 1999-09-02 ISO/IEC JTC 1/SC 2 CODED CHARACTER SETS SECRETARIAT: JAPAN (JISC) DOC TYPE: TITLE: SOURCE: National Body Contribution National Body Comments on SC 2 N 3331, ISO/IEC

More information

Typescript on LLVM Language Reference Manual

Typescript on LLVM Language Reference Manual Typescript on LLVM Language Reference Manual Ratheet Pandya UNI: rp2707 COMS 4115 H01 (CVN) 1. Introduction 2. Lexical Conventions 2.1 Tokens 2.2 Comments 2.3 Identifiers 2.4 Reserved Keywords 2.5 String

More information

C How to Program, 6/e by Pearson Education, Inc. All Rights Reserved.

C How to Program, 6/e by Pearson Education, Inc. All Rights Reserved. C How to Program, 6/e 1992-2010 by Pearson Education, Inc. An important part of the solution to any problem is the presentation of the results. In this chapter, we discuss in depth the formatting features

More information

Accelerating Information Technology Innovation

Accelerating Information Technology Innovation Accelerating Information Technology Innovation http://aiti.mit.edu Cali, Colombia Summer 2012 Lesson 02 Variables and Operators Agenda Variables Types Naming Assignment Data Types Type casting Operators

More information

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits.

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. LISP Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. From one perspective, sequences of bits can be interpreted as a code for ordinary decimal digits,

More information

CPS122 Lecture: From Python to Java last revised January 4, Objectives:

CPS122 Lecture: From Python to Java last revised January 4, Objectives: Objectives: CPS122 Lecture: From Python to Java last revised January 4, 2017 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.

More information

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines.

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines. Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

Haskell 98 in short! CPSC 449 Principles of Programming Languages

Haskell 98 in short! CPSC 449 Principles of Programming Languages Haskell 98 in short! n Syntax and type inferencing similar to ML! n Strongly typed! n Allows for pattern matching in definitions! n Uses lazy evaluation" F definition of infinite lists possible! n Has

More information

GBIL: Generic Binary Instrumentation Language. Language Reference Manual. By: Andrew Calvano. COMS W4115 Fall 2015 CVN

GBIL: Generic Binary Instrumentation Language. Language Reference Manual. By: Andrew Calvano. COMS W4115 Fall 2015 CVN GBIL: Generic Binary Instrumentation Language Language Reference Manual By: Andrew Calvano COMS W4115 Fall 2015 CVN Table of Contents 1) Introduction 2) Lexical Conventions 1. Tokens 2. Whitespace 3. Comments

More information

LECTURE 8: SETS. Software Engineering Mike Wooldridge

LECTURE 8: SETS. Software Engineering Mike Wooldridge LECTURE 8: SETS Mike Wooldridge 1 What is a Set? The concept of a set is used throughout mathematics; its formal definition matches closely our intuitive understanding of the word. Definition: A set is

More information

PROGRAMMING IN HASKELL. Chapter 2 - First Steps

PROGRAMMING IN HASKELL. Chapter 2 - First Steps PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 The Hugs System Hugs is an implementation of Haskell 98, and is the most widely used Haskell system; The interactive nature of Hugs makes it well suited

More information

We use non-bold capital letters for all random variables in these notes, whether they are scalar-, vector-, matrix-, or whatever-valued.

We use non-bold capital letters for all random variables in these notes, whether they are scalar-, vector-, matrix-, or whatever-valued. The Bayes Classifier We have been starting to look at the supervised classification problem: we are given data (x i, y i ) for i = 1,..., n, where x i R d, and y i {1,..., K}. In this section, we suppose

More information

Fundamentals of Programming Session 15

Fundamentals of Programming Session 15 Fundamentals of Programming Session 15 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2013 These slides have been created using Deitel s slides Sharif University of Technology Outlines

More information

SPARK-PL: Introduction

SPARK-PL: Introduction Alexey Solovyev Abstract All basic elements of SPARK-PL are introduced. Table of Contents 1. Introduction to SPARK-PL... 1 2. Alphabet of SPARK-PL... 3 3. Types and variables... 3 4. SPARK-PL basic commands...

More information

What needs to be kept track of ffl The current substitution ffl The current goal ffl The clause currently in use ffl Backtrack Information 2

What needs to be kept track of ffl The current substitution ffl The current goal ffl The clause currently in use ffl Backtrack Information 2 Prolog Implementation ffl The Generic Idea: Everything except unification. ffl An Introduction to the WAM: Flat unification only. 1 What needs to be kept track of ffl The current substitution ffl The current

More information

ISO/IEC JTC 1/SC 32 N 2334

ISO/IEC JTC 1/SC 32 N 2334 ISO/IEC JTC 1/SC 32 N 2334 Date: 2013-03-20 REPLACES: ISO/IEC JTC 1/SC 32 Data Management and Interchange Secretariat: United States of America (ANSI) Administered by Farance Inc. on behalf of ANSI DOCUMENT

More information

C++ Programming: From Problem Analysis to Program Design, Third Edition

C++ Programming: From Problem Analysis to Program Design, Third Edition C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 2: Basic Elements of C++ Objectives (continued) Become familiar with the use of increment and decrement operators Examine

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

More information

This document is a preview generated by EVS

This document is a preview generated by EVS INTERNATIONAL STANDARD ISO/IEC 9899 Fourth edition 2018-07 Information technology Programming languages C Technologies de l'information Langages de programmation C Reference number ISO/IEC 9899:2018(E)

More information

Programming languages C

Programming languages C INTERNATIONAL STANDARD ISO/IEC 9899:1999 TECHNICAL CORRIGENDUM 1 Published 2001-09-01 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE

More information

Part 5 Program Analysis Principles and Techniques

Part 5 Program Analysis Principles and Techniques 1 Part 5 Program Analysis Principles and Techniques Front end 2 source code scanner tokens parser il errors Responsibilities: Recognize legal programs Report errors Produce il Preliminary storage map Shape

More information

Intermediate Code Generation

Intermediate Code Generation Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

More information

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors.

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors. 1 LECTURE 3 OUTLINES Variable names in MATLAB Examples Matrices, Vectors and Scalar Scalar Vectors Entering a vector Colon operator ( : ) Mathematical operations on vectors examples 2 VARIABLE NAMES IN

More information