Background Functions (1C) Young Won Lim 5/26/18
|
|
- Franklin Malone
- 5 years ago
- Views:
Transcription
1 Background Functions (1C)
2 Copright (c) Young W. Lim. Permission is granted to cop, distribute and/or modif this document under the terms of the GNU Free Documentation License, Version 1.2 or an later version published b the Free Softare Foundation; ith no Invariant Sections, no Front-Cover Tets, and no Back-Cover Tets. A cop of the license is included in the section entitled "GNU Free Documentation License". Please send corrections (or suggestions) to ounglim@hotmail.com. This document as produced b using LibreOffice.
3 Based on Haskell in 5 steps Functions 3
4 Function Definition Function Definition I. square = * - function tpe is inferred not efficient Tpe Inference Function Definition II. square :: Double -> Double square = * function tpe declaration function definition function tpe declaration function definition Functions 4
5 Tpe Declaration Tpe Declaration the declaration of an identifier's tpe identifier name :: tpe name... identifier names (including function identifiers) must alas begin ith a loer-case letter tpe names in Haskell alas begin ith a capital letter Functions 5
6 Function Tpes and Tpe Classes Function Definition I. square = * function definition = Function Definition II. square :: Double -> Double square = * function definition function tpe declaration = tpe class a set of tpes function tpe 1 function tpe 2 function tpe n Requirements Subclasses Functions 6
7 Curr & Uncurr f :: a -> b -> c the curried form ofg :: (a, b) -> c f = curr g g = uncurr f f = g (,) the curried form is usuall more convenient because it allos partial application. the curried form f :: a -> b -> c curring uncurring g :: (a, b) -> c all functions are considered curried f g (, ) all functions take just one argument Functions 7
8 Functions : First-class Data Tpes functions are first-class data tpes Haskell treats functions as regular data, just like integers, or floating-point values, or other tpes. a function can take other functions as parameters a function takes a parameter and produces another function (curried function) f f :: a -> b -> c a f (b->c) f :: a -> b -> c (f ) f :: a -> (b -> c) f returns a function of tpe b -> c b g c g g :: b -> c Functions 8
9 Curring Eamples f f f Functions 9
10 Polmorphic Functions specific tpes vs. arbitrar tpes a polmorphic functions an abstract tpe each tpe variable is generall a loer-case letter. Eample) A translate function takes a function f and a distance d returns a ne function g that is f "translated" d units to the right Functions 10
11 Polmorphic Function Eamples translate :: (Double -> Double) -> Double -> (Double -> Double) Double f Double translate f d = g here g = f ( d) Double d translate translate :: (Double -> a) -> Double -> (Double -> a) Double g Double Double d f Double Functions 11
12 Curring Curring recursivel transforms a function that takes multiple arguments into a function that takes just a single argument and returns another function if an arguments are still needed. f :: a -> b -> c f :: a -> b -> c f f :: a -> b -> c a f (b->c) (f ) f :: a -> (b -> c) g g :: b -> c b g c Functions 12
13 Partiall Applied Functions f, (f ) f f :: a -> b -> c -> d -> e f = (f ) f g1 :: b -> c -> d -> e g1 = Functions 13
14 Partiall Applied Functions (f ), (f ) (f ) f g2 :: c -> d -> e g2 = (f ) f g3 :: d -> e g3 = Functions 14
15 Partiall Applied Functions g1, g2, g3 (f ) = g1 f g1 (f ) = g2 f g2 (f ) = g3 f g3 Functions 15
16 Returning Functions f returns g1 function f f f g1 g1 returns g2 function g1 g1 g1 g2 g2 returns g3 function g2 g2 g2 g3 Functions 16
17 Curring Eamples f :: a -> b -> c -> d -> e f :: a -> (b -> (c -> (d -> e))) a (b -> (c -> (d -> e))) ((((f ) ) ) ) f b g1 (c -> (d -> e)) c (d -> e) g2 d g3 e Functions 17
18 Curring Eamples f :: a -> b -> c -> d -> e f :: a -> (b -> (c -> (d -> e))) a (b -> (c -> (d -> e))) ((((f ) ) ) ) f b g1 (c -> (d -> e)) c g1 (d -> e) g2 d g3 e Functions 18
19 Curring Eamples f :: a -> b -> c -> d -> e f :: a -> (b -> (c -> (d -> e))) a (b -> (c -> (d -> e))) ((((f ) ) ) ) f b g1 (c -> (d -> e)) c (d -> e) g2 d g2 g3 e Functions 19
20 Curring Eamples f :: a -> b -> c -> d -> e f :: a -> (b -> (c -> (d -> e))) a (b -> (c -> (d -> e))) ((((f ) ) ) ) f b g1 (c -> (d -> e)) c (d -> e) g2 d g3 e Functions 20
21 Curring Eamples mult :: Int -> Int -> Int -> Int (((mult ) ) ) f :: a -> (b -> (c -> d)) (((f ) ) ) Int Int Int f Int Functions 21
22 Partial Applications mult :: Int -> Int -> Int -> Int f :: Int -> (Int -> (Int -> Int)) mult mult a 1 = g1 mult a 1 a 2 = g2 f :: Int -> (Int -> (Int -> Int)) f f :: Int -> (Int -> Int) g1 :: Int -> (Int -> Int) g1 f :: Int -> Int g2 :: Int -> Int g2 mult a 1 a 2 a 3 constants Functions 22
23 Returning Functions mult :: Int -> Int -> Int -> Int mult Int f (Int -> (Int -> Int)) mult a 1 Int g1 (Int -> Int) mult a 1 a 2 Int g2 Int mult a 1 a 2 a 3 Functions 23
24 Curring Eamples mult :: Int -> Int -> Int -> Int f mult f mult a 1 f mult a 1 a 2 mult a 1 a 2 a 3 Functions 24
25 Anonmous Function \ -> + 1 (\ -> + 1) 4 5 :: Integer (\ -> + ) :: Integer addone = \ -> + 1 Lambda Epression Functions 25
26 let in clinder :: (RealFloat a) => a -> a -> a clinder r h = let sidearea = 2 * pi * r * h toparea = pi * r ^2 in sidearea + 2 * toparea The form is let <bindings> in <epression>. The names that ou define in the let part are accessible to the epression after the in part. Notice that the names are also aligned in a single column. For no it just seems that let puts the bindings first and the epression that uses them later hereas here is the other a around. Functions 26
27 $ Function Application ($) :: (a -> b) -> a -> b f $ = f (a -> b) : left function a : right value b : result Function application ith a space f - high precedence - left-associative f a b c = ((f a) b) c) Function application ith $ f $ - the loest precedence - right associative f $ a $ b $ c = f (a (b c)) Functions 27
28 $ a single argument $ a convenience function that eliminates man parentheses. When a $ is encountered, the epression on its right is applied as the parameter to the function on its left. func $ value a single argument $ a single argument riting an opening parentheses ( and then riting a closing one ) on the far right side of the epression. ( a single argument ) far right side Functions 28
29 $ Function Application Eamples sum (map sqrt [1..130]) due to a lo precedence sum $ map sqrt [1..130] sqrt ((sqrt 3) + (4 + 9)) sqrt ( ) sqrt $ Functions 29
30 $ Right Associative Eamples because $ is right-associative f (g ( )) f $ g $ sum (filter (> 10) (map (*2) [2..10])) sum $ filter (> 10) $ map (*2) [2..10] Functions 30
31 $ Map Function Application Eamples But apart from getting rid of parentheses, $ means that function application can be treated just like another function. map function application over a list of functions. map ($ 3) [(4+), (10*), (^2), sqrt] [(4+ $ 3), (10* $ 3), (^2 $ 3), sqrt $ 3] [7.0, 30.0, 9.0, ] Functions 31
32 const function const _ = Prelude> const Prelude> const useful for passing to higher-order functions hen ou don't need all their fleibilit. For eample, the monadic sequence operator >> can be defined in terms of the monadic bind operator as >> = >>= const (>>) = (. const). (>>=) Functions 32
33 read function Prelude> let = read "True" Prelude> :t :: Read a => a doesn't have a concrete tpe. is sort of an epression that can provide a value of a concrete tpe, hen e ask for it. Input: read "12"::Int Output: 12 Input: read "12"::Double Output: 12.0 Input: read "1.22"::Double Output: 1.22 ask to be an Int or a Bool or anthing Prelude> :: Bool True Functions 33
34 replicate, take, repeat, ccle, iterate replicate Int -> a -> [a] creates a list of length given b the first argument and the items having value of the second argument take Int -> [a] -> [a] creates a list, the first argument determines, ho man items should be taken from the list passed as the second argument repeat a -> [a] it creates an infinite list here all items are the first argument ccle [a] -> [a] it creates a circular list from a finite one Iterate (a -> a) -> a -> [a] creates an infinite list here the first item is calculated b appling the function on the second argument, the second item b appling the function on the previous result and so on. Functions 34
35 replicate, take, repeat, ccle, iterate eamples Input: replicate 3 5 Output: [5,5,5] Input: replicate 4 "aa" Output: ["aa","aa","aa","aa"] Input: replicate 5 'a' Output: "aaaaa" Input: take 5 [1,2,3,4,5,6,7] Output: [1,2,3,4,5] Input: take 5 [1,2] Output: [1,2] Input: take 0 [1,2,3,4,5,6,7] Output: [] Input: take 5 (repeat 3) Output: [3,3,3,3,3] Input: take 7 (iterate (2*) 1) Output: [1,2,4,8,16,32,64] Input: take 10 (ccle [1,2,3]) Output: [1,2,3,1,2,3,1,2,3,1] Input: take 4 (repeat 3) Output: [3,3,3,3] Input: take 6 (repeat 'A') Output: "AAAAAA" Input: take 5 (repeat "A") Output: ["A","A","A","A","A"] Input: take 10 (ccle [1,2,3]) Output: [1,2,3,1,2,3,1,2,3,1] Input: take 10 (ccle "ABC") Output: "ABCABCABCA" Functions 35
36 flip flip flip f = f :: (a -> b -> c) -> b -> a -> c flip f takes its (first) to arguments in the reverse order of f. Haskell Overvie 36
37 flip flip :: (a -> b -> c) -> b -> a -> c flip f = f flip :: (a -> b -> c) -> b -> a -> c flip f = g here g = f flip :: (a -> b -> c) -> b -> a -> c flip f = g here g a b = f b a flip :: (a -> b -> c) -> b -> a -> c flip f = g here g a b = f b a flip :: (a -> b -> c) -> b -> a -> c flip f = g here g = f flip f = g flip f = g flip f = g Haskell Overvie 37
38 flip flip flip f = f :: (a -> b -> c) -> b -> a -> c flip f takes its (first) to arguments in the reverse order of f. Applicatives Sequencing (3C) 38
39 flip flip :: (a -> b -> c) -> b -> a -> c flip f = f flip :: (a -> b -> c) -> b -> a -> c flip f = g here g = f flip :: (a -> b -> c) -> b -> a -> c flip f = g here g a b = f b a flip :: (a -> b -> c) -> b -> a -> c flip f = g here g a b = f b a flip :: (a -> b -> c) -> b -> a -> c flip f = g here g = f flip f = g flip f = g flip f = g Applicatives Sequencing (3C) 39
40 References [1] ftp://ftp.geoinfo.tuien.ac.at/navratil/haskelltutorial.pdf [2]
Background Functions (1C) Young Won Lim 4/3/18
Background Functions (1C) Copright (c) 2016-2017 Young W. Lim. Permission is granted to cop, distribute and/or modif this document under the terms of the GNU Free Documentation License, Version 1.2 or
More informationBackground Functions (1C) Young Won Lim 12/6/17
Background Functions (1C) Copright (c) 2016-2017 Young W. Lim. Permission is granted to cop, distribute and/or modi this document under the terms o the GNU Free Documentation License, Version 1.2 or an
More informationState Monad (3D) Young Won Lim 9/25/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 informationApplicatives Comparisons (2C) Young Won Lim 3/6/18
Comparisons (2C) 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 informationBackground Type Classes (1B) Young Won Lim 6/28/18
Background Type Classes (1B) 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 informationBackground Type Classes (1B) Young Won Lim 6/14/18
Background Type Classes (1B) 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 informationPolymorphism Overview (1A) Young Won Lim 2/20/18
Polymorphism Overview (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 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 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 informationArrays (1A) Young Won Lim 12/4/17
Arrays (1A) Copyright (c) 2009-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
More informationMonad Background (3A) Young Won Lim 11/20/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 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 informationPointers (1A) Young Won Lim 3/5/18
Pointers (1A) Copyright (c) 2010-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 informationHaskell Overview II (2A) Young Won Lim 9/26/16
(2A) Copyright (c) 2016 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 informationHaskell Overview II (2A) Young Won Lim 8/9/16
(2A) Copyright (c) 2016 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 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 informationHaskell Overview III (3A) Young Won Lim 10/4/16
(3A) Copyright (c) 2016 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 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 Complexity of Algorithms (3A) Young Won Lim 4/3/18
Copyright (c) 2015-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 version published
More informationArrays (1A) Young Won Lim 1/27/17
Arrays (1A) Copyright (c) 2009-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
More informationOperators (2A) Young Won Lim 10/5/13
Operators (2A) Copyright (c) 2013 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
More informationOperators (2A) Young Won Lim 10/2/13
Operators (2A) Copyright (c) 2013 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
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 informationState Monad Examples (6C) Young Won Lim 9/26/18
State Monad s (6C) 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
More informationMonad (1A) Young Won Lim 6/9/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 informationHaskell Overview II (2A) Young Won Lim 8/23/16
(2A) Copyright (c) 2016 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 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 informationFunction Overview (1A) Young Won Lim 10/23/17
Function Overview (1A) Copyright (c) 2010 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
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 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 informationState Monad Examples (6C) Young Won Lim 9/22/18
State Monad s (6C) 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
More informationMonad (3A) Young Won Lim 8/9/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 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 informationBackground Expressions (1D) Young Won Lim 7/7/18
Background Expressions (1D) 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 informationApplications of Arrays (1A) Young Won Lim 3/15/17
Copyright (c) 2009-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 informationState Monad Example (3H) Young Won Lim 2/16/18
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 version published
More informationMonad (1A) Young Won Lim 6/26/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 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 informationBackground Constructors (1A) Young Won Lim 7/9/18
Background Constructors (1A) 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 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 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 informationGHCi: Getting started (1A) Young Won Lim 6/3/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 informationPointers (1A) Young Won Lim 11/1/17
Pointers (1A) Copyright (c) 2010-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 informationPointers (1A) Young Won Lim 2/6/18
Pointers (1A) Copyright (c) 2010-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 informationIO Monad (3C) Young Won Lim 8/23/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 informationLogic Haskell Exercises
Logic Haskell Exercises Young W. Lim 2018-09-15 Sat Young W. Lim Logic Haskell Exercises 2018-09-15 Sat 1 / 36 Outline 1 Based on 2 Logic Using TAMO.hs Young W. Lim Logic Haskell Exercises 2018-09-15 Sat
More informationPointers (1A) Young Won Lim 2/10/18
Pointers (1A) Copyright (c) 2010-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 informationMonad Background (3A) Young Won Lim 10/5/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 informationPointers (1A) Young Won Lim 1/9/18
Pointers (1A) Copyright (c) 2010-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 informationPointers (1A) Young Won Lim 1/5/18
Pointers (1A) Copyright (c) 2010-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 informationApplications of Pointers (1A) Young Won Lim 12/26/17
Applications of (1A) Copyright (c) 2010-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
More informationMonoid (4A) Young Won Lim 8/12/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 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 informationBox-and-arrow Diagrams
Box-and-arrow Diagrams 1. Draw box-and-arrow diagrams for each of the following statements. What needs to be copied, and what can be referenced with a pointer? (define a ((squid octopus) jelly sandwich))
More informationAnnouncements. CSCI 334: Principles of Programming Languages. Lecture 19: C++
Announcements CSCI 4: Principles of Programming Languages Lecture 19: C++ HW8 pro tip: the HW7 solutions have a complete, correct implementation of the CPS version of bubble sort in SML. All ou need to
More informationPointers (1A) Young Won Lim 1/22/18
Pointers (1A) Copyright (c) 2010-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 informationGHCi: Getting started (1A) Young Won Lim 5/31/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 informationCS 320: Concepts of Programming Languages
CS 320: Concepts of Programming Languages Wayne Snyder Computer Science Department Boston University Lecture 06: Useful Haskell Syntax, HO Programming Continued o Goodbye to Bare Bones Haskell: Built-in
More informationMonad (1A) Young Won Lim 6/21/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 informationApplications of Arrays (1A) Young Won Lim 2/11/17
Copyright (c) 2009-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 informationAlgorithms Bubble Sort (1B) Young Won Lim 4/5/18
Algorithms Bubble Sort (1B) Young Won Lim 4/5/18 Copyright (c) 2017 2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation
More informationLecture 4: Higher Order Functions
Lecture 4: Higher Order Functions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 26, 2017 HIGHER ORDER FUNCTIONS The order of a function
More informationBackground Constructors (1A) Young Won Lim 7/5/18
Background Constructors (1A) 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 informationBackground Constructors (1A) Young Won Lim 6/30/18
Background Constructors (1A) 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 informationIO Monad (3D) Young Won Lim 1/18/18
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 version published
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 informationApplications of Pointers (1A) Young Won Lim 4/11/18
(1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished
More informationState Monad (3D) Young Won Lim 8/31/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 informationLibraries (1A) Young Won Lim 6/5/17
Libraries (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 or any later
More informationMaybe Monad (3B) Young Won Lim 12/21/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 information15.4 Constrained Maxima and Minima
15.4 Constrained Maxima and Minima Question 1: Ho do ou find the relative extrema of a surface hen the values of the variables are constrained? Question : Ho do ou model an optimization problem ith several
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 informationHaskell Overview IV (4A) Young Won Lim 10/24/16
(4A) Copyright (c) 2016 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 informationApplications of Pointers (1A) Young Won Lim 2/27/18
Alications of (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later
More informationMaybe Monad (3B) Young Won Lim 1/3/18
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 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 informationBackground Constructors (1A) Young Won Lim 1/22/18
Background Constructors (1A) 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 informationMonad Overview (3B) Young Won Lim 1/16/18
Based on Haskell in 5 steps https://wiki.haskell.org/haskell_in_5_steps 2 Copyright (c) 2016-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of
More informationApplications of Pointers (1A) Young Won Lim 3/14/18
(1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished
More informationProgramming Paradigms
PP 2017/18 Unit 12 Functions and Data Types in Haskell 1/45 Programming Paradigms Unit 12 Functions and Data Types in Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE
More informationDay06 A. Young W. Lim Mon. Young W. Lim Day06 A Mon 1 / 16
Day06 A Young W. Lim 2017-09-18 Mon Young W. Lim Day06 A 2017-09-18 Mon 1 / 16 Outline 1 Based on 2 Introduction C Program Control Young W. Lim Day06 A 2017-09-18 Mon 2 / 16 Based on "C How to Program",
More informationApplications of Pointers (1A) Young Won Lim 3/21/18
(1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished
More informationIO Monad (3C) Young Won Lim 1/6/18
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 version published
More informationTitle: Recursion and Higher Order Functions
Programing Paradigms and Languages Title: Recursion and Higher Order Functions Students: Ysee Monir, Besart Vishesella Proffesor: Dr. Robert Kowalczyk In this presentation, we'll take a closer look at
More informationApplications of Pointers (1A) Young Won Lim 3/31/18
(1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished
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 informationAccessibility (1A) Young Won Lim 8/22/13
Accessibility (1A) Copyright (c) 2011-2013 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
More informationShell CSCE 314 TAMU. Haskell Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can
More informationApplications of Pointers (1A) Young Won Lim 4/24/18
(1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished
More informationBinary Search Tree (3A) Young Won Lim 6/2/18
Binary Search Tree (A) /2/1 Copyright (c) 2015-201 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 informationThe code generator must statically assign a location in the AR for each temporary add $a0 $t1 $a0 ; $a0 = e 1 + e 2 addiu $sp $sp 4 ; adjust $sp (!
Lecture Outline Code Generation (II) Adapted from Lectures b Profs. Ale Aiken and George Necula (UCB) Allocating temporaries in the Activation Record Let s optimie cgen a little Code generation for OO
More informationPointers (1A) Young Won Lim 1/14/18
Pointers (1A) Copyright (c) 2010-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 informationLogical Methods in... using Haskell Getting Started
Logical Methods in... using Haskell Getting Started Jan van Eijck May 4, 2005 Abstract The purpose of this course is to teach a bit of functional programming and logic, and to connect logical reasoning
More informationCS 440: Programming Languages and Translators, Spring 2019 Mon 2/4
Haskell, Part 5 CS 440: Programming Languages and Translators, Spring 2019 Mon 2/4 More Haskell Miscellaneous topics Simple I/O, do blocks, actions Modules data vs type declaration Instances of classtypes
More informationPointers (1A) Young Won Lim 10/18/17
Pointers (1A) Coyright (c) 2010-2013 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Haskell: Declaring Types and Classes Dr. Hyunyoung Lee 1 Outline Declaring Data Types Class and Instance Declarations 2 Defining New Types Three constructs for defining types:
More informationType (1A) Young Won Lim 2/17/18
Type (1A) Copyright (c) 2010-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 version
More informationHaskell Overview IV (4A) Young Won Lim 10/13/16
(4A) Copyright (c) 2016 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 informationCORDIC Fixed Point Simulation. Young Won Lim 2/28/12
CORDIC Fixed Point Simulation Copyright (c) 2012 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
More informationFunctional Programming in C++
Functional Programming in C++ David Letscher Saint Louis University Programming Languages Letscher (SLU) Functional Programming in C++ Prog Lang 1 / 17 What is needed to incorporate functional programming?
More information