2 Haskell. Haskell (629) 59. Haskell. B. Curry. 1.2, 1.3, Haskell 98 [16] 1. Haskell. Haskell. ( Haskell.
|
|
- Hester Long
- 5 years ago
- Views:
Transcription
1 (629) 59 Haskell 1 Haskell Haskell Hugs GHC 2 Haskell 2.1 Haskell 1987 FPCA (Functional Programming Languages and Computer Architechture) Programming Language Haskell and Systems Yoshiyuki ONOUE,, Graduate School of Information Science and Technology, University of Tokyo, Vol.18, No.6(2001), pp [ ] Haskell B. Curry , 1.2, 1.3, Haskell 98 [16] 1 Haskell Haskell Haskell ( Haskell [7] (high-order function) (lazy evaluation) / (nonstrictness) (pattern matching) Haskell 1. (polymorphism) / (overloading)
2 60 (630) 2. Haskell Monad 3. / (list/array comprehension) {x 2 x {1,...,100},x is odd} [ x*x x<-[1..100], odd x] 4. Haskell Haskell 21 Haskell 2.2 Haskell [16] Haskell Haskell [2] [9][19] Ramanujan [17] Ramanujan x = a 3 + b 3 = c 3 + d 3 (1) a c, a d [17] Miranda[20] 1 Haskell 3 (Main.hs, Rama.hs, Sort.hs) Haskell.hs Main main -- (l.10) {-,-} (ll.27 30) 2 / l.6 l.19 ramanujan, fsort l.1 l.3 l.8 l.3 Rama ll r x <= r y l.34 l.35 ll.33 2,3 fmerge main Haskell
3 (631) Vol. 18 No. 6 Nov module Main where 2 3 import Rama 4 Main.hs 5 main = print (take 3 ramanujan) Rama.hs 6 module Rama ( ramanujan ) where 7 8 import Sort ( fsort ) Finding Ramanujan numbers ramanujan :: [((Int,Int), (Int,Int))] 13 ramanujan = [(x,y) (x,y)<-zip s (tail s), 14 sumcubes x == sumcubes y] 15 where s = fsort sumcubes sumcubes :: (Int,Int) -> Int 18 sumcubes (a,b) = a^3 + b^3 Sort.hs 19 module Sort ( fsort ) where fsort :: ((Int,Int) -> Int) -> Int 22 -> [(Int,Int)] 23 fsort r k 24 = (k,k) : fmerge r [(k,b) b<-[k+1..]] 25 (fsort r (k+1)) {- 28 Two argument lists should be infinite, 29 so there is no definition for null list. 30 -} fmerge :: (a->int) -> [a] -> [a] -> [a] 33 fmerge r (x:xs) (y:ys) 34 r x <= r y = x : fmerge r xs (y:ys) 35 otherwise = y : fmerge r (x:xs) ys 1 Ramanujan l.15 fsort sumcubes 1 [(1,1),(1,2),(2,2),(1,3),(2,3),(3,3),(1,4), (2,4),(3,4),(1,5),(4,4),(2,5),(3,5),..] 2 3 Ramanujan Hello, World! 1 (Hello.hs) main = putstr "Hello, World!\n" module module Main where Main putstr print putstr 3 Hugs 3.1 Hugs 2 Mark P. Jones Haskell Hugs 98 ( ) Unix Windows Win32, Linux, Machintosh Windows Hugs (winhugs) GUI winhugs 2 Hugs 98,
4 62 (632) 1 % hugs 2 (......) 3 4 Hugs session for: 5 /usr/local/share/hugs/lib/prelude.hs 6 Type :? for help 7 Prelude> sum [1..10] Prelude> :load Hello.hs 10 Reading file "Hello.hs": Hugs session for: 13 /usr/local/share/hugs/lib/prelude.hs 14 Hello.hs 15 Main> main 16 Hello, World! Main> :quit 19 [Leaving Hugs] 20 % hugs Hugs hugs 2 Hugs 1 5 Prelude.hs Haskell : Hugs Hugs :? +s :set +s +t :set +t -hnum :set -98 Haskell 98 Hugs runhugs (literate Haskell) 1 #! runhugs #!/usr/local/bin/runhugs > main = putstr "Hello, World!\n" literate Haskell Knuth (literate programming) Haskell >.lhs runhugs literate Haskell 1 #! 3.3 Haskell Haskell Haskell 98 [15] Prelude import Hugs
5 (633) Vol. 18 No. 6 Nov :find func -E :browse modules ( 2 /usr/local/share/hugs/lib/) Prelude.hs :also import 4 GHC GHC 3 Glasgow Haskell OS ( ) GHC 5.02 x86 Win32, Linux, FreeBSD sparc Solaris 3 The Glasgow Haskell Compiler, GHC 100MB perl, gcc, Happy Happy Haskell C yacc Happy Haskell Happy Haskell Happy Win32, Linux, FreeBSD, Solaris GHC GHC GHC Happy GHC 4.2 gcc C Haskell (Haskell )Main main a.out -o -O % ghc -O -o main Main.hs %./main --help GHC GHC (Native Code Generator, NCG) Haskell
6 64 (634) NCG C gcc gcc C -C -S -c -v rama -hc 177,974 bytes x seconds Tue Jun 5 10: bytes 12k ramanujan/fsort 10k fsort/fmerge 8k 6k MAIN/CAF 4k MAIN/main 2k 0k seconds 3 1 % ghci Main.hs 2 (......) GHC -prof -auto-all -auto-all +RTS -p +RTS -h +RTS -p.prof +RTS -h.hp hp2ps PostScript ( 3) 4 Loading package std... linking... done. 5 Compiling Sort ( Sort.hs, interpreted ) 6 Compiling Rama ( Rama.hs, interpreted ) 7 Compiling Main ( Main.hs, interpreted ) 8 Main> :set +s 9 Main> main 10 [((1,12),(9,10)),((2,16),(9,15)),((2,24),(18,20))] 11 (0.10 secs, bytes) 12 Main> :quit 13 Leaving GHCi. 14 % 4 ghci Ramanujan 4.4 GHCi GHC 5.0 (GHCi) ghci ghc --interactive 4 Ramanujan ghci Hugs :load, :? Haskell Makefile ( Main) --make
7 (635) Vol. 18 No. 6 Nov Hugs, GHC [sec] [MB] Hugs 5.27 GHCi GHC GHC O Hugs GHC Hugs GHC Ramanujan 10 PC/AT (Pentium II Xeon 450MHz, 512MB) Hugs GHC 2 GHCi Hugs 10 2 GHC 5.0 Haskell Hugs Haskell [6][8] [3] Ackermann 25 C, C++, Java Lisp, Scheme, SML Perl, Python, Ruby awk, bash UNIX 30 3 GHC main GHC Haskell [3] 5.2 Hugs G-machine (abstract machine) G-machine [1][10] G-code Hugs Haskell G-code G-machine G-code GHC Core STG (Spineless Tagless G-machine [13] ) C C ( 5 ) Core STG G-code Core / STG [14]
8 66 (636) GHC Compiler Overview Haskell Source Optimization passes Optimization passes 5 Parser,Reader Renamer,Desugarer Type checker Core Syntax CoreToStg Stg Syntax GHC CodeGen, Flattern C C Compiler Native code Core (program fusion) [11] [12] GHC [4] [5] 6 [18] (calculation) [ 1 ] Augustsson, A: A Compiler for Lazy ML, Proc. of the ACM Symposium on Lisp and Functional Programming, ACM Press, 1984, pp [2] Bird, R.: Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall Press, 1998, [ 3 ] Bagley, D.: The Great Computer Language Shootout, shootout/ [ 4 ] Chakravarty, M.: The Glasgow Haskell Compiler Commentary. ~chak/haskell/ghc/comm/. [ 5 ] Chitil, O.: Adding an Optimisation Pass to the Glasgow Haskell Compiler, unpublished, www-users.cs.york.ac.uk/~olaf/ PUBLICATIONS/extendGHC.ps.gz. [ 6 ] Hartel, P. H. et al.: Benchmarking Implementations of Functional Languages with Pseudoknot, a Float-Intensive Benchmark, J. Functional Programming, Vol.6, No.4 (1996), pp [ 7 ] Hudak, P.: Conception, Evolution, and Application of Functional Programming Languages, ACM Computing Survey, Vol.21, No.3 (1989), pp ( :, 89,, 1991, pp ) [ 8 ] Hudak, P. and Jones, M. P.: Haskell vs. Ada vs. C++ vs. Awk vs...., An Experiment in Software Prototyping Productivity, unpublished, [ 9 ] Hudak, P., Peterson, J. and Fasel, J.: A Gentle Introduction to Haskell, tutorial/. [10] Johnsson, T.: Efficient Compilation of Lazy Evaluation, Proc. SIGPLAN 84 Symposium on Compiler Construction, ACM Press, 1984, pp [11],, : HYLO,, Vol.15, No.6 (1998), pp [12],,, :,, Vol.17, No.3 (2000), pp [13] Peyton Jones, S. L.: Implementing Lazy Functional Languages on Stock Hardware: the Spineless Tagless G-machine, J. Functional Programming, Vol.2, No.2 (1992), pp [14] Peyton Jones, S. L. and Santos, A: A transformation-based optimiser for Haskell, Science of Computer Programming, Vol.32, No.1 3 (1998), pp [15] Peyton Jones, S. L. and Hughes, J. (eds.): Standard libraries for the Haskell 98 Programming
9 (637) Vol. 18 No. 6 Nov Language, Department of Computer Science Tech Report YALEU/DCS/RR-1105, Yale University, [16] Peyton Jones, S. L. and Hughes, J. (eds.): Report on the Programming Language Haskell 98, Department of Computer Science Tech Report YALEU/DCS/RR-1106, Yale University, [17] :,, Vol.9, No.1 (1991), pp [18] :, bit, Vol.31, No.3 (1999), pp [19] Thompson, S.: Haskell: The Craft of Functional Programming, 2nd edition, Addison-Wesley, [20] Turner, D. A.: Miranda: a non-strict functional language with polymorphic types, Functional Programming Languages and Computer Architecture, Springer-Verlag, LNCS 201, 1985, pp.1 16.
which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented
A Type-Sensitive Preprocessor For Haskell Noel Winstanley Department of Computer Science University of Glasgow September 4, 1997 Abstract This paper presents a preprocessor which generates code from type
More informationProgramming Languages Fall 2013
Programming Languages Fall 2013 Lecture 2: types Prof. Liang Huang huang@qc.cs.cuny.edu Recap of Lecture 1 functional programming vs. imperative programming basic Haskell syntax function definition lazy
More informationPractical Haskell. An introduction to functional programming. July 21, Practical Haskell. Juan Pedro Villa-Isaza. Introduction.
Practical Practical An introduction to functional programming July 21, 2011 Contents Practical Practical is fun, and that s what it s all about! Even if seems strange to you at first, don t give up. Learning
More information3. Functional Programming. Oscar Nierstrasz
3. Functional Programming Oscar Nierstrasz Roadmap > Functional vs. Imperative Programming > Pattern Matching > Referential Transparency > Lazy Evaluation > Recursion > Higher Order and Curried Functions
More informationAn introduction to functional programming. July 23, 2010
An introduction to functional programming July 23, 2010 About Outline About About What is functional programming? What is? Why functional programming? Why? is novel. is powerful. is fun. About A brief
More informationHaskell. : qsort. Haskell Advent Calendar 2016 *2 15. Wnn Hello, world Haskell. qsort. -- qsort :: Ord a => [a] -> [a]
Haskell 2016 12 15 @unnohideyuki * 1 Haskell Advent Calendar 2016 *2 15 Haskell Haskell Haskell Haskell *3 : qsort Wnn Hello, world Haskell qsort -- qsort :: Ord a => [a] -> [a] *1 https://twitter.com/unnohideyuki
More informationIntroduction. chapter Functions
chapter 1 Introduction In this chapter we set the stage for the rest of the book. We start by reviewing the notion of a function, then introduce the concept of functional programming, summarise the main
More informationConclusions and further reading
Chapter 18 Conclusions and further reading We have not been exhaustive in the description of the Caml Light features. We only introduced general concepts in functional programming, and we have insisted
More informationFunctional 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 informationIntroduction to Haskell
Introduction to Haskell Matt Mullins Texas A&M Computing Society October 6, 2009 Matt Mullins (TACS) Introduction to Haskell October 6, 2009 1 / 39 Outline Introduction to Haskell Functional Programming
More informationFunctional Programming
Functional Programming Overview! Functional vs. imperative programming! Fundamental concepts! Evaluation strategies! Pattern matching! Higher order functions! Lazy lists References! Richard Bird, Introduction
More informationEfficient Interpretation by Transforming Data Types and Patterns to Functions
Efficient Interpretation by Transforming Data Types and Patterns to Functions Jan Martin Jansen 1, Pieter Koopman 2, Rinus Plasmeijer 2 1 The Netherlands Ministry of Defence, 2 Institute for Computing
More informationHaskell An Introduction
Haskell An Introduction What is Haskell? General purpose Purely functional No function can have side-effects IO is done using special types Lazy Strongly typed Polymorphic types Concise and elegant A First
More informationFunctional Programming Language Haskell
Functional Programming Language Haskell Mohammed Aslam CIS 24 Prof. Kopec Presentation: 03 Date: 05/05/2003 Haskell is a general purpose, purely functional programming language named after the logician
More informationCS 11 Haskell track: lecture 1
CS 11 Haskell track: lecture 1 This week: Introduction/motivation/pep talk Basics of Haskell Prerequisite Knowledge of basic functional programming e.g. Scheme, Ocaml, Erlang CS 1, CS 4 "permission of
More informationLecture 19: Functions, Types and Data Structures in Haskell
The University of North Carolina at Chapel Hill Spring 2002 Lecture 19: Functions, Types and Data Structures in Haskell Feb 25 1 Functions Functions are the most important kind of value in functional programming
More informationCS457/557 Functional Languages
CS457/557 Functional Languages Spring 2018 Lecture 1: Course Introduction Andrew Tolmach Portland State University (with thanks to Mark P. Jones) 1 Goals of this course Introduce the beautiful ideas of
More informationFunctional Programming I *** Functional Programming and Interactive Theorem Proving. Ulrich Berger Michaelmas Term 2006
Functional Programming I *** Functional Programming and Interactive Theorem Proving Ulrich Berger Michaelmas Term 2006 2 *** Room 306 (Faraday Tower) Phone 513380 Fax 295708 u.berger@swansea.ac.uk http://www-compsci.swan.ac.uk/
More informationCSci 450: Org. of Programming Languages Overloading and Type Classes
CSci 450: Org. of Programming Languages Overloading and Type Classes H. Conrad Cunningham 27 October 2017 (after class) Contents 9 Overloading and Type Classes 1 9.1 Chapter Introduction.........................
More informationHaskell Introduction Lists Other Structures Data Structures. Haskell Introduction. Mark Snyder
Outline 1 2 3 4 What is Haskell? Haskell is a functional programming language. Characteristics functional non-strict ( lazy ) pure (no side effects*) strongly statically typed available compiled and interpreted
More informationCSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc.
CSC312 Principles of Programming Languages : Functional Programming Language Overview of Functional Languages They emerged in the 1960 s with Lisp Functional programming mirrors mathematical functions:
More informationHaskell 101. (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza
Haskell 101 (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell
More informationA Brief Haskell and GHC Refresher
A Brief Haskell and GHC Refresher Henrik Nilsson and Neil Sculthorpe School of Computer Science University of Nottingham 24th September 2013 1 Introduction The purpose of this document is to give you quick
More informationPrinciples of Programming Languages
Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Introduc;on to Hakell Lesson 27! 1 The origins: ML programming
More informationPROGRAMMING 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 informationHaskell & functional programming, some slightly more advanced stuff. Matteo Pradella
Haskell & functional programming, some slightly more advanced stuff Matteo Pradella pradella@elet.polimi.it IEIIT, Consiglio Nazionale delle Ricerche & DEI, Politecnico di Milano PhD course @ UniMi - Feb
More informationHeat An Interactive Development Environment for Learning & Teaching Haskell
Heat An Interactive Development Environment for Learning & Teaching Haskell Olaf Chitil 11 th September 2008 Olaf Chitil (University of Kent) Heat An IDE for Learning Haskell 11 th September 2008 1 / 17
More informationReferences. Monadic I/O in Haskell. Digression, continued. Digression: Creating stand-alone Haskell Programs
References Monadic I/O in Haskell Jim Royer CIS 352 March 6, 2018 Chapter 18 of Haskell: the Craft of Functional Programming by Simon Thompson, Addison-Wesley, 2011. Chapter 9 of Learn you a Haskell for
More informationIt is better to have 100 functions operate one one data structure, than 10 functions on 10 data structures. A. Perlis
Chapter 14 Functional Programming Programming Languages 2nd edition Tucker and Noonan It is better to have 100 functions operate one one data structure, than 10 functions on 10 data structures. A. Perlis
More informationProgramming Languages Fall Prof. Liang Huang
Programming Languages Fall 2014 Prof. Liang Huang huang@qc.cs.cuny.edu Computer Science is no more about computers than astronomy is about telescopes. (Mis)attributed to Edsger Dijkstra, 1970. Computer
More informationCSc 372. Comparative Programming Languages. 13 : Haskell Lazy Evaluation. Department of Computer Science University of Arizona
1/16 CSc 372 Comparative Programming Languages 13 : Haskell Lazy Evaluation Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/16 Lazy evaluation
More informationExtended Static Checking for Haskell (ESC/Haskell)
Extended Static Checking for Haskell (ESC/Haskell) Dana N. Xu University of Cambridge advised by Simon Peyton Jones Microsoft Research, Cambridge Program Errors Give Headache! Module UserPgm where f ::
More informationLecture 8: Summary of Haskell course + Type Level Programming
Lecture 8: Summary of Haskell course + Type Level Programming Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense October 31, 2017 Principles from Haskell
More informationTopic 9: Type Checking
Recommended Exercises and Readings Topic 9: Type Checking From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6 and
More informationTopic 9: Type Checking
Topic 9: Type Checking 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6
More informationHaskell through HUGS THE BASICS
Haskell through HUGS THE BASICS FP for DB Basic HUGS 1 Algorithmic Imperative Languages variables assignment if condition then action1 else action2 loop block while condition do action repeat action until
More informationn n Try tutorial on front page to get started! n spring13/ n Stack Overflow!
Announcements n Rainbow grades: HW1-6, Quiz1-5, Exam1 n Still grading: HW7, Quiz6, Exam2 Intro to Haskell n HW8 due today n HW9, Haskell, out tonight, due Nov. 16 th n Individual assignment n Start early!
More informationAn introduction introduction to functional functional programming programming using usin Haskell
An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dkau Haskell The most popular p purely functional, lazy programming g language Functional programming language : a program
More informationFunctional Programming in Haskell Part I : Basics
Functional Programming in Haskell Part I : Basics Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/ madhavan Madras Christian
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Basics
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Basics 2 Contents 1. Jump into Haskell: Using ghc and ghci (more detail) 2. Historical Background of Haskell 3. Lazy, Pure, and Functional
More informationTesting. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]
Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a
More informationAdvanced features of Functional Programming (Haskell)
Advanced features of Functional Programming (Haskell) Polymorphism and overloading January 10, 2017 Monomorphic and polymorphic types A (data) type specifies a set of values. Examples: Bool: the type of
More informationHaske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell
Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dk The most popular purely functional, lazy programming language Functional programming language : a program
More informationPROGRAMMING IN HASKELL. CS Chapter 6 - Recursive Functions
PROGRAMMING IN HASKELL CS-205 - Chapter 6 - Recursive Functions 0 Introduction As we have seen, many functions can naturally be defined in terms of other functions. factorial :: Int Int factorial n product
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL8: Multiparameter Type Classes, Constructor Classes Ian Stark School of Informatics The University of Edinburgh Thursday 4 February Semester 2 Week 4 E H U
More informationProgramming Paradigms
PP 2017/18 Unit 11 Functional Programming with Haskell 1/37 Programming Paradigms Unit 11 Functional Programming with Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE
More informationSide Effects (3B) Young Won Lim 11/27/17
Side Effects (3B) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later
More informationPROGRAMMING IN HASKELL. Chapter 2 - First Steps
PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 Glasgow Haskell Compiler GHC is the leading implementation of Haskell, and comprises a compiler and interpreter; The interactive nature of the interpreter
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions
More informationAdvanced Topics in Programming Languages Lecture 2 - Introduction to Haskell
Advanced Topics in Programming Languages Lecture 2 - Introduction to Haskell Ori Bar El Maxim Finkel 01/11/17 1 History Haskell is a lazy, committee designed, pure functional programming language that
More informationSide Effects (3B) Young Won Lim 11/20/17
Side Effects (3B) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later
More informationThe List Datatype. CSc 372. Comparative Programming Languages. 6 : Haskell Lists. Department of Computer Science University of Arizona
The List Datatype CSc 372 Comparative Programming Languages 6 : Haskell Lists Department of Computer Science University of Arizona collberg@gmail.com All functional programming languages have the ConsList
More informationhttp://www.isi.edu/~hdaume/htut/ Copyright (c) Hal Daume III, 2002 2004. The preprint version of this tutorial is intended to be available to the entire Haskell community, so we grant permission to copy
More informationHomework 1: Functional Programming, Haskell
Com S 541 Programming Languages 1 September 25, 2005 Homework 1: Functional Programming, Haskell Due: problems 1 and 3, Thursday, September 1, 2005; problems 4-9, Thursday, September 15, 2005; remaining
More informationLazy State Evaluation of Process Functional Programs
Lazy State Evaluation of Process Functional Programs Ján Kollár Jan.Kollar@tuke.sk Jaroslav Porubän Jaroslav.Poruban@tuke.sk Peter Václavík Peter.Vaclavik@tuke.sk Miroslav Vidiščak Miroslav.Vidiscak@tuke.sk
More informationKent Academic Repository
Kent Academic Repository Full text document (pdf) Citation for published version Chitil, Olaf (2006) Promoting Non-Strict Programming. In: Draft Proceedings of the 18th International Symposium on Implementation
More informationPush/enter vs eval/apply. Simon Marlow Simon Peyton Jones
Push/enter vs eval/apply Simon Marlow Simon Peyton Jones The question Consider the call (f x y). We can either Evaluate f, and then apply it to its arguments, or Push x and y, and enter f Both admit fully-general
More informationHaskell: From Basic to Advanced. Part 2 Type Classes, Laziness, IO, Modules
Haskell: From Basic to Advanced Part 2 Type Classes, Laziness, IO, Modules Qualified types In the types schemes we have seen, the type variables were universally quantified, e.g. ++ :: [a] -> [a] -> [a]
More informationHaskell Types, Classes, and Functions, Currying, and Polymorphism
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Types, Classes, and Functions, Currying, and Polymorphism 2 Types A type is a collection of related values. For example, Bool contains the
More informationINTRODUCTION TO FUNCTIONAL PROGRAMMING
INTRODUCTION TO FUNCTIONAL PROGRAMMING Graham Hutton University of Nottingham adapted by Gordon Uszkay 1 What is Functional Programming? Opinions differ, and it is difficult to give a precise definition,
More informationCS 457/557: Functional Languages
CS 457/557: Functional Languages Lists and Algebraic Datatypes Mark P Jones Portland State University 1 Why Lists? Lists are a heavily used data structure in many functional programs Special syntax is
More informationBackground Operators (1E) Young Won Lim 7/7/18
Background Operators (1E) Copyright (c) 2016-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Haskell 101 Dr. Hyunyoung Lee 1 Contents 1. Historical Background of Haskell 2. Lazy, Pure, and Functional Language 3. Using ghc and ghci 4. Functions 5. Haskell Scripts
More informationSolution sheet 1. Introduction. Exercise 1 - Types of values. Exercise 2 - Constructors
Solution sheet 1 Introduction Please note that there can be other solutions than those listed in this document. This is a literate Haskell file which is available as PDF, as well as literate Haskell source
More informationFUNCTIONAL PEARLS The countdown problem
To appear in the Journal of Functional Programming 1 FUNCTIONAL PEARLS The countdown problem GRAHAM HUTTON School of Computer Science and IT University of Nottingham, Nottingham, UK www.cs.nott.ac.uk/
More informationSide Effects (3B) Young Won Lim 11/23/17
Side Effects (3B) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later
More informationCSc 372 Comparative Programming Languages
CSc 372 Comparative Programming Languages 1 : Introduction Christian Collberg collberg+372@gmail.com Department of Computer Science University of Arizona Copyright c 2007 Christian Collberg [1] Why learn
More informationMonad Background (3A) Young Won Lim 11/8/17
Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationCSc 372. Comparative Programming Languages. 1 : Introduction. Department of Computer Science University of Arizona
Christian Collberg CSc 372 Comparative Programming Languages 1 : Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2011 Christian Collberg Why learn programming
More informationPrinciples of Programming Languages, 3
Principles of Programming Languages, 3 Matteo Pradella May 2015 Matteo Pradella Principles of Programming Languages, 3 May 2015 1 / 94 1 Introduction on purity and evaluation 2 Haskell Matteo Pradella
More informationOptimising Functional Programming Languages. Max Bolingbroke, Cambridge University CPRG Lectures 2010
Optimising Functional Programming Languages Max Bolingbroke, Cambridge University CPRG Lectures 2010 Objectives Explore optimisation of functional programming languages using the framework of equational
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Final Review Part I Dr. Hyunyoung Lee 1 Programming Language Characteristics Different approaches to describe computations, to instruct computing devices E.g., Imperative,
More informationFaster Haskell. Neil Mitchell
Faster Haskell Neil Mitchell www.cs.york.ac.uk/~ndm The Goal Make Haskell faster Reduce the runtime But keep high-level declarative style Full automatic - no special functions Different from foldr/build,
More informationMore fun with recursion
Informatics 1 Functional Programming Lecture 6 More fun with recursion Don Sannella University of Edinburgh Part I Counting Counting Prelude [1..3] [1,2,3] Prelude enumfromto 1 3 [1,2,3] [m..n] stands
More informationSide Effects (3A) Young Won Lim 1/13/18
Side Effects (3A) Copyright (c) 2016-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later
More informationInformatics 1 Functional Programming Lecture 12. Data Abstraction. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 12 Data Abstraction Don Sannella University of Edinburgh Part I Sets as lists without abstraction We will look again at our four ways of implementing sets.
More informationSource-Based Trace Exploration Work in Progress
Source-Based Trace Exploration Work in Progress Olaf Chitil University of Kent, UK Abstract. Hat is a programmer s tool for generating a trace of a computation of a Haskell 98 program and viewing such
More informationMonad Background (3A) Young Won Lim 11/18/17
Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationAdding an Optimisation Pass to the Glasgow Haskell Compiler
Adding an Optimisation Pass to the Glasgow Haskell Compiler Olaf Chitil Lehrstuhl für Informatik II, Aachen University of Technology, Germany chitil@informatik.rwth-aachen.de http://www-i2.informatik.rwth-aachen.de/
More informationStandard prelude. Appendix A. A.1 Classes
Appendix A Standard prelude In this appendix we present some of the most commonly used definitions from the standard prelude. For clarity, a number of the definitions have been simplified or modified from
More informationInformatics 1 Functional Programming 19 Tuesday 23 November IO and Monads. Philip Wadler University of Edinburgh
Informatics 1 Functional Programming 19 Tuesday 23 November 2010 IO and Monads Philip Wadler University of Edinburgh The 2010 Informatics 1 Competition Sponsored by Galois (galois.com) List everyone who
More informationCSc 372. Comparative Programming Languages. 3 : Haskell Introduction. Department of Computer Science University of Arizona
1/17 CSc 372 Comparative Programming Languages 3 : Haskell Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/17 What is Haskell?
More informationAbout the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Haskell Programming
About the Tutorial Haskell is a widely used purely functional language. Functional programming is based on mathematical functions. Besides Haskell, some of the other popular languages that follow Functional
More informationI/O in Purely Functional Languages. Stream-Based I/O. Continuation-Based I/O. Monads
I/O in Purely Functional Languages Stream-Based I/O Four centuries ago, Descartes pondered the mind-body problem: how can incorporeal minds interact with physical bodies? Designers of purely declarative
More informationHaskell A Wild Ride. Abstract. 1 Safety Precautions. Sven Moritz Hallberg
Haskell A Wild Ride Sven Moritz Hallberg 21st. Chaos Communication Congress Berlin, December 27th 29th 2004 Abstract The Haskell programming language is a comparatively young purely functional
More informationFunctional Programming. Overview. Topics. Definition n-th Fibonacci Number. Graph
Topics Functional Programming Christian Sternagel Harald Zankl Evgeny Zuenko Department of Computer Science University of Innsbruck WS 2017/2018 abstract data types, algebraic data types, binary search
More informationFunctional Programming in Haskell for A level teachers
Functional Programming in Haskell for A level teachers About this document Functional Programming is now part of the A level curriculum. This document is intended to get those who already have some programming
More informationENCE Computer Organization and Architecture. Chapter 1. Software Perspective
Computer Organization and Architecture Chapter 1 Software Perspective The Lifetime of a Simple Program A Simple Program # include int main() { printf( hello, world\n ); } The goal of this course
More informationType Inference. Prof. Clarkson Fall Today s music: Cool, Calm, and Collected by The Rolling Stones
Type Inference Prof. Clarkson Fall 2016 Today s music: Cool, Calm, and Collected by The Rolling Stones Review Previously in 3110: Interpreters: ASTs, evaluation, parsing Formal syntax Formal semantics
More informationLogic - CM0845 Introduction to Haskell
Logic - CM0845 Introduction to Haskell Diego Alejandro Montoya-Zapata EAFIT University Semester 2016-1 Diego Alejandro Montoya-Zapata (EAFIT University) Logic - CM0845 Introduction to Haskell Semester
More informationCOP4020 Programming Languages. Functional Programming Prof. Robert van Engelen
COP4020 Programming Languages Functional Programming Prof. Robert van Engelen Overview What is functional programming? Historical origins of functional programming Functional programming today Concepts
More informationGHCi: Getting started (1A) Young Won Lim 5/26/17
GHCi: Getting started (1A) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2
More informationAccording to Larry Wall (designer of PERL): a language by geniuses! for geniuses. Lecture 7: Haskell. Haskell 98. Haskell (cont) - Type-safe!
Lecture 7: Haskell CSC 131 Fall, 2014 Kim Bruce According to Larry Wall (designer of PERL): a language by geniuses for geniuses He s wrong at least about the latter part though you might agree when we
More informationCS 360: Programming Languages Lecture 10: Introduction to Haskell
CS 360: Programming Languages Lecture 10: Introduction to Haskell Geoffrey Mainland Drexel University Thursday, February 5, 2015 Adapted from Brent Yorgey s course Introduction to Haskell. Section 1 Administrivia
More informationA Supercompiler for Core Haskell
A Supercompiler for Core Haskell Neil Mitchell and Colin Runciman University of York, UK http://www.cs.york.ac.uk/ ndm Abstract. Haskell is a functional language, with features such as higher order functions
More informationImperative languages
Imperative languages Von Neumann model: store with addressable locations machine code: effect achieved by changing contents of store locations instructions executed in sequence, flow of control altered
More informationImplementing Haskell overloading. Chalmers University of Technology. S Goteborg, Sweden. paper. Aug93].
Implementing Haskell overloading Lennart Augustsson Department of Computer Sciences Chalmers University of Technology S-412 96 Goteborg, Sweden Email: augustss@cs.chalmers.se Abstract Haskell overloading
More informationMA400: Financial Mathematics
MA400: Financial Mathematics Introductory Course Lecture 1: Overview of the course Preliminaries A brief introduction Beginning to program Some example programs Aims of this course Students should have
More informationImplementing Functional Languages on Object-Oriented Virtual Machines
Implementing Functional Languages on Object-Oriented Virtual Machines Nigel Perry 1,2 New Zealand Erik Meijer Microsoft Corporation Abstract We discuss some of the issues involved in implementing functional
More informationCSE 3302 Programming Languages Lecture 8: Functional Programming
CSE 3302 Programming Languages Lecture 8: Functional Programming (based on the slides by Tim Sheard) Leonidas Fegaras University of Texas at Arlington CSE 3302 L8 Spring 2011 1 Functional Programming Languages
More information