Tomas Petricek. F# Language Overview
|
|
- Lucas Carpenter
- 5 years ago
- Views:
Transcription
1 Tomas Petricek F# Language Overview
2 Master student of computer science at Charles University Prague Bachelor thesis on AJAX development with meta programming under Don Syme Microsoft C# MVP Numerous articles and several open source projects Article published on his personal website Tomas Petricek 2/33
3 Research project at Microsoft (2005).NET language Visual Studio integration Multi paradigm Strongly functional Core ML and Ocaml inspired F# 3/33
4 Functional programming Imperative and object-oriented programming Language oriented programming (Briefly) Related C# constructs in green Article Overview 4/33
5 Functional Style Language Features 5/33
6 fsi.exe (F# Interactive Console) VFSI (Visual Studio) Alt-Enter Visual Studio #Light;; Running Code 6/33
7 Strongly typed with type inference Basic data types Tuple Discriminated union Record Array List Function Object Types 7/33
8 > let tuple = (42, "Hello world!");; val tuple : int * string > let (num, str) = tuple;; val num : int val str : string Good for returning multiple values Tuples (C# Anonymous Types) 8/33
9 > // Declaration of the 'Expr' type type Expr = Binary of string * Expr * Expr Variable of string Constant of int;; (...) > // Create a value 'v' representing 'x + 10' let v = Binary("+", Variable "x", Constant 10);; val v : Expr Discriminatied Union 9/33
10 > let rec eval x = match x with Binary(op, l, r) -> Constant(n) -> n;; val eval : Expr -> int let (lv, rv) = (eval l, eval r) if (op = "+") then lv + rv elif (op = "-") then lv - rv else failwith "Unknown operator!" Variable(var) -> getvariablevalue var Discriminated Union Pattern Matching 10/33
11 > // Declaration of a record type type Product = { Name:string; Price:int };; > // Constructing a value of the 'Product' type > // Creating a copy with different 'Name' let p2 = { p with Name="Test2" };; //Note that slightly different copies are easy to make val p2 : Product let p = { Name="Test"; Price=42; };; val p : Product > p.name;; val it : string = "Test" Records (C# Structs) 11/33
12 > let nums = [1; 2; 3; 4; 5];; val nums : list<int> // Not.NET List! > let rec sum list = match list with h::tail -> (sum tail) + h [] -> 0 val sum : list<int> -> int Lists 12/33
13 > // 'acc' is usually called an 'accumulator' variable let rec sumaux acc list = match list with h::tail -> sumaux (acc + h) tail [] -> acc val sum : int -> list<int> -> int > let sum list = sumaux 0 list val sum : list<int> -> int Lists - Tail-Calls 13/33
14 > let createadder n = (fun arg -> n + arg);; val createadder : int -> int -> int > let add10 = createadder 10;; val add10 : int -> int > add10 32;; val it : int = 42 Functions 14/33
15 > let add a b = a + b;; val add : int -> int -> int > let add10 = add 10;; val add10 : int -> int Read left-to-right, each parameter actually results in a function being returned Functions - Currying 15/33
16 > let odds = List.filter (fun n -> n%2 <> 0) [1; 2; 3; 4; 5];; val odds : list<int> = [1; 3; 5] > let squares = List.map (fun n -> n * n) odds;; val squares : list<int> = [1; 9; 25] C# Lambda Expressions Functions Generics and Higher Order Functions 16/33
17 > let nums = [1; 2; 3; 4; 5];; val nums : list<int> > let odds_plus_ten = nums > List.filter (fun n-> n%2 <> 0) > List.map (add 10) // Note: Is a function val odds_plus_ten : list<int> = [11; 13; 15];; Implemented to solve ugly code Functions Pipelining 17/33
18 C# alternatives Extension methods and lambda expressions var evenunderten = ints.where(i => i % 2 == 0).Where(i => i < 10); LINQ var evenundertenlinq = from i in ints where i % 2 == 0 where i < 10 select i; Functions Pipelining 18/33
19 Classic notation: g o f or f(g(x)) > (fst >> String.uppercase) ("Hello world", 123);; val it : string = "HELLO WORLD" // fst is a function which takes the first element in a tuple > let data = [ ("Jim", 1); ("John", 2); ("Jane", 3) ];; val data : (string * int) list > data > List.map (fst >> String.uppercase);; val it : string list = ["JIM"; "JOHN"; "JANE"] Function Composition 19/33
20 Imperative and OOP Style Language Features 20/33
21 Necessary features for imperative style Eager evaluation Mutable types > // Imperative factorial calculation let n = 10 let mutable res = 1 for n = 2 to n do res <- res * n // Return the result res;; val it : int = Imperative Support 21/33
22 Classic mutable array > let arr = [ ] val arr : array<int> > for i = 0 to 9 do arr.[i] < arr.[i] > arr;; val it : array<int> = [ 10; 9; 8; 7; 6; 5; 4; 3; 2; 1 ] Array 22/33
23 Must work with the OOP style Base Class Library Demands: Mutability, side effects and eager evaluation > let list = new ResizeArray<_>() // Alias for System.Collections.Generic.List list.add("hello") list.add("world") Seq.to_list list;; // To F# list val it : string list = ["hello"; "world"].net Interoperability 23/33
24 Compiles into CLR classes Fully compatible with other.net languages Supports Single inheritance Multiple interfacing Subtyping Dynamic type testing All object types inherit from 'obj' which is an alias for System.Object Object Types 24/33
25 // Constructor type MyCell(n:int) = // Field let mutable data = n + 1 do printf "Creating MyCell(%d)" n // Property member x.data with get() = data and set(v) = data <- v // Methods member x.print() = printf "Data: %d" data override x.tostring() = sprintf "(Data: %d)" data static member FromInt(n) = MyCell(n) Object Type 25/33
26 // Interface definition type AnyCell = abstract Value : int with get, set abstract Print : unit -> unit // Interface implementation type ImplementCell(n:int) = let mutable data = n + 1 interface AnyCell with member x.print() = printf "Data: %d" data member x.value with get() = data and set(v) = data <- v Object Types - Interfaces 26/33
27 Implement interface on the fly > let newcell n = // Function which returns new cell with n as data let data = ref n // Reference { new AnyCell with member x.print() = printf "Data: %d" (!data) member x.value with get() =!data // Dereferencing and set(v) = data:=v };; // { } is the object expression val newcell : int -> AnyCell Object Expressions 27/33
28 Language Oriented Programming 28/33
29 Is a key feature of F# The concept of LOP is to create Domain Specific Languages It can be done in several ways but the article focuses on those which use a subset of F# rather than creating new/other languages Language Oriented Programming 29/33
30 Discriminating union as declarative language Active patterns Creates different views of the same data Less code to transform data Computation expressions for transforming code structures More... (Quotation) Purpose is to allow developers to think only in the abstraction of the domain (remove scaffolding code) Language Oriented Programming - Features 30/33
31 Article Clean and concentrated information Well written Some code was unexplained (or only explained later) Part 4 is less coherent and seems undirected Personal Observations 31/33
32 OOP can does also support Language Oriented Programming to some extent F# looks to be an interesting and promising language, mainly because of.net interoperability. Language oriented programming syntax needs more work Personal Observations 32/33
33 ? Questions 33/33
Concepts of Programming Languages
Concepts of Programming Languages Lecture 15 - Functional Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationConcepts behind the C# 3 language. Faculty of Mathematics and Physics, Charles University in Prague
Concepts behind the C# 3 language TomášPetříček(tomas@tomasp.net) Faculty of Mathematics and Physics, Charles University in Prague 1 Introduction The C# 3 (currently available in preliminary version) is
More informationChapter 15. Functional Programming Languages
Chapter 15 Functional Programming Languages Chapter 15 Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages The First Functional Programming Language: Lisp Introduction
More informationIntroduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming
Introduction to ML Mooly Sagiv Cornell CS 3110 Data Structures and Functional Programming The ML Programming Language General purpose programming language designed by Robin Milner in 1970 Meta Language
More informationCSCI-GA Scripting Languages
CSCI-GA.3033.003 Scripting Languages 12/02/2013 OCaml 1 Acknowledgement The material on these slides is based on notes provided by Dexter Kozen. 2 About OCaml A functional programming language All computation
More informationIntroduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming
Introduction to ML Mooly Sagiv Cornell CS 3110 Data Structures and Functional Programming The ML Programming Language General purpose programming language designed by Robin Milner in 1970 Meta Language
More informationExercises on ML. Programming Languages. Chanseok Oh
Exercises on ML Programming Languages Chanseok Oh chanseok@cs.nyu.edu Dejected by an arcane type error? - foldr; val it = fn : ('a * 'b -> 'b) -> 'b -> 'a list -> 'b - foldr (fn x=> fn y => fn z => (max
More informationL3 Programming September 19, OCaml Cheatsheet
OCaml Cheatsheet Note: this document comes from a previous course (by Sylvain Schimdt). The explanations of the OCaml syntax in this sheet are by no means intended to be complete or even sufficient; check
More informationF# for Industrial Applications Worth a Try?
F# for Industrial Applications Worth a Try? Jazoon TechDays 2015 Dr. Daniel Egloff Managing Director Microsoft MVP daniel.egloff@quantalea.net October 23, 2015 Who are we Software and solution provider
More informationCMSC 430 Introduction to Compilers. Fall Everything (else) you always wanted to know about OCaml (but were afraid to ask)
CMSC 430 Introduction to Compilers Fall 2015 Everything (else) you always wanted to know about OCaml (but were afraid to ask) OCaml You know it well from CMSC 330 All programming projects will be in OCaml
More informationIntroduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming
Introduction to ML Mooly Sagiv Cornell CS 3110 Data Structures and Functional Programming Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages Call-by-value Operational Semantics
More informationCSE341: Programming Languages Lecture 9 Function-Closure Idioms. Dan Grossman Winter 2013
CSE341: Programming Languages Lecture 9 Function-Closure Idioms Dan Grossman Winter 2013 More idioms We know the rule for lexical scope and function closures Now what is it good for A partial but wide-ranging
More informationProgramming language seminar The F# language. Peter Sestoft Wednesday Course plan
Programming language seminar 2011 The F# language Peter Sestoft Wednesday 2011-08-31 www.itu.dk 1 Course plan Four cycles, each containing a mini-project: F# Types and type inference Scala and Scala actors
More informationAbram Hindle Kitchener Waterloo Perl Monger October 19, 2006
OCaml Tutorial Abram Hindle Kitchener Waterloo Perl Monger http://kw.pm.org abez@abez.ca October 19, 2006 Abram Hindle 1 OCaml Functional Language Multiple paradigms: Imperative, Functional, Object Oriented
More informationFunctions & First Class Function Values
Functions & First Class Function Values PLAI 1st ed Chapter 4, PLAI 2ed Chapter 5 The concept of a function is itself very close to substitution, and to our with form. Consider the following morph 1 {
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 informationRecap: Functions as first-class values
Recap: Functions as first-class values Arguments, return values, bindings What are the benefits? Parameterized, similar functions (e.g. Testers) Creating, (Returning) Functions Iterator, Accumul, Reuse
More informationAn introduction to C++ template programming
An introduction to C++ template programming Hayo Thielecke University of Birmingham http://www.cs.bham.ac.uk/~hxt March 2015 Templates and parametric polymorphism Template parameters Member functions of
More informationF# - QUICK GUIDE F# - OVERVIEW
F# - QUICK GUIDE http://www.tutorialspoint.com/fsharp/fsharp_quick_guide.htm Copyright tutorialspoint.com F# - OVERVIEW F# is a functional programming language. To understand F# constructs, you need to
More informationChapter 11 :: Functional Languages
Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative
More informationCSE341, Spring 2013, Final Examination June 13, 2013
CSE341, Spring 2013, Final Examination June 13, 2013 Please do not turn the page until 8:30. Rules: The exam is closed-book, closed-note, except for both sides of one 8.5x11in piece of paper. Please stop
More informationReactive programming, WinForms,.NET. Björn Dagerman
Reactive programming, WinForms,.NET Björn Dagerman Motivation - Troublesome for many students previous years - Most student solutions we see are imperative - Useful techniques when working with GUI s,
More informationLecture: Functional Programming
Lecture: Functional Programming This course is an introduction to the mathematical foundations of programming languages and the implementation of programming languages and language-based tools. We use
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Week 13 - Part 1 Thomas Wies New York University Review Last lecture Object Oriented Programming Outline Today: Scala Sources: Programming in Scala, Second
More informationCSCI 2041: Functions, Mutation, and Arrays
CSCI 2041: Functions, Mutation, and Arrays Chris Kauffman Last Updated: Fri Sep 14 15:06:04 CDT 2018 1 Logistics OCaml System Manual: 1.1-1.3 Practical OCaml: Ch 1-2 OCaml System Manual: 25.2 (Pervasives
More informationSome Advanced ML Features
Some Advanced ML Features Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming University of Washington: Dan Grossman ML is small Small number of powerful constructs
More informationCS 11 Ocaml track: lecture 3
CS 11 Ocaml track: lecture 3 n Today: n A (large) variety of odds and ends n Imperative programming in Ocaml Equality/inequality operators n Two inequality operators: and!= n Two equality operators:
More informationConcepts of programming languages
Concepts of programming languages F# Tim Zoet, Zino Onomiwo, Martijn Boom, Rik van Toor 1 Background Don Syme Microsoft Research Recent development by the F# Software Foundation Microsoft develops the
More informationFUNCTIONAL PROGRAMMING
FUNCTIONAL PROGRAMMING Map, Fold, and MapReduce Prof. Clarkson Summer 2015 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Review Yesterday: Lists: OCaml's awesome built-in datatype
More informationIntroduction to OCaml
Fall 2018 Introduction to OCaml Yu Zhang Course web site: http://staff.ustc.edu.cn/~yuzhang/tpl References Learn X in Y Minutes Ocaml Real World OCaml Cornell CS 3110 Spring 2018 Data Structures and Functional
More informationCIS 120 Midterm II November 8, Name (printed): Pennkey (login id):
CIS 120 Midterm II November 8, 2013 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing
More informationFunctional Programming. Pure Functional Programming
Functional Programming With examples in F# Pure Functional Programming Functional programming involves evaluating expressions rather than executing commands. Computation is largely performed by applying
More informationCS Lecture 6: Map and Fold. Prof. Clarkson Fall Today s music: Selections from the soundtrack to 2001: A Space Odyssey
CS 3110 Lecture 6: Map and Fold Prof. Clarkson Fall 2014 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Review Features so far: variables, operators, let expressions, if expressions,
More informationCIS 120 Midterm II November 8, 2013 SOLUTIONS
CIS 120 Midterm II November 8, 2013 SOLUTIONS 1 1. Facts about OCaml and Java (15 points) For each part, circle true or false. a. T F The.equals method in Java is roughly similar to OCaml s = operator.
More informationHard deadline: 3/28/15 1:00pm. Using software development tools like source control. Understanding the environment model and type inference.
CS 3110 Spring 2015 Problem Set 3 Version 0 (last modified March 12, 2015) Soft deadline: 3/26/15 11:59pm Hard deadline: 3/28/15 1:00pm Overview In this assignment you will implement several functions
More informationPrograms as Data 6 Imperative languages, environment and store, micro-c
Programs as Data 6 Imperative languages, environment and store, micro-c Peter Sestoft Monday 2012-10-01* www.itu.dk 1 Course overview Today A naïve imperative language C concepts Pointers and pointer arithmetics,
More informationList Functions, and Higher-Order Functions
List Functions, and Higher-Order Functions Björn Lisper Dept. of Computer Science and Engineering Mälardalen University bjorn.lisper@mdh.se http://www.idt.mdh.se/ blr/ List Functions, and Higher-Order
More informationHands-On Lab. Introduction to F# Lab version: Last updated: 12/10/2010. Page 1
Hands-On Lab Introduction to Lab version: 1.0.0 Last updated: 12/10/2010 Page 1 CONTENTS OVERVIEW... 3 EXERCISE 1: TYPES IN... 4 Task 1 Observing Type Inference in... 4 Task 2 Working with Tuples... 6
More informationOCaml. ML Flow. Complex types: Lists. Complex types: Lists. The PL for the discerning hacker. All elements must have same type.
OCaml The PL for the discerning hacker. ML Flow Expressions (Syntax) Compile-time Static 1. Enter expression 2. ML infers a type Exec-time Dynamic Types 3. ML crunches expression down to a value 4. Value
More informationFunctional Programming. Big Picture. Design of Programming Languages
Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics
More informationSo what does studying PL buy me?
So what does studying PL buy me? Enables you to better choose the right language but isn t that decided by libraries, standards, and my boss? Yes. Chicken-and-egg. My goal: educate tomorrow s tech leaders
More informationA brief tour of history
Introducing Racket λ A brief tour of history We wanted a language that allowed symbolic manipulation Scheme The key to understanding LISP is understanding S-Expressions Racket List of either atoms or
More informationCS Lecture 6: Map and Fold. Prof. Clarkson Spring Today s music: Selections from the soundtrack to 2001: A Space Odyssey
CS 3110 Lecture 6: Map and Fold Prof. Clarkson Spring 2015 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Review Course so far: Syntax and semantics of (most of) OCaml Today: No
More informationFunctional Programming
Functional Programming CS 1025 Computer Science Fundamentals I Stephen M. Watt University of Western Ontario When the Function is the Thing In O-O programming, you typically know where an action is needed,
More informationCSCC24 Functional Programming Typing, Scope, Exceptions ML
CSCC24 Functional Programming Typing, Scope, Exceptions ML Carolyn MacLeod 1 winter 2012 1 Based on slides by Anya Tafliovich, with many thanks to Gerald Penn and Sheila McIlraith. motivation Consider
More informationCSE341: Programming Languages Lecture 9 Function-Closure Idioms. Dan Grossman Fall 2011
CSE341: Programming Languages Lecture 9 Function-Closure Idioms Dan Grossman Fall 2011 More idioms We know the rule for lexical scope and function closures Now what is it good for A partial but wide-ranging
More informationXkcd.com. September 27, 2013
Xkcd.com September 27, 2013 Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics. OCaml, Your Developer Assistant Fabrice
More informationClosures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming
Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Summary 1. Predictive Parsing 2. Large Step Operational Semantics (Natural) 3. Small Step Operational Semantics
More informationCITS 3242 Programming Paradigms
CITS 3242 Programming Paradigms Topic 8: Generic functions, sequences, sets and maps This topic covers a number of useful features of F# and it s libraries sequences: generic functions, sequences, sets,
More informationRuby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
More informationModule 10: Imperative Programming, Modularization, and The Future
Module 10: Imperative Programming, Modularization, and The Future If you have not already, make sure you Read How to Design Programs Sections 18. 1 CS 115 Module 10: Imperative Programming, Modularization,
More informationThe Substitution Model. Nate Foster Spring 2018
The Substitution Model Nate Foster Spring 2018 Review Previously in 3110: simple interpreter for expression language abstract syntax tree (AST) evaluation based on single steps parser and lexer (in lab)
More informationCPL 2016, week 10. Clojure functional core. Oleg Batrashev. April 11, Institute of Computer Science, Tartu, Estonia
CPL 2016, week 10 Clojure functional core Oleg Batrashev Institute of Computer Science, Tartu, Estonia April 11, 2016 Overview Today Clojure language core Next weeks Immutable data structures Clojure simple
More informationCMSC 330, Fall 2013, Practice Problems 3
CMSC 330, Fall 2013, Practice Problems 3 1. OCaml and Functional Programming a. Define functional programming b. Define imperative programming c. Define higher-order functions d. Describe the relationship
More informationMetaprogramming assignment 3
Metaprogramming assignment 3 Optimising embedded languages Due at noon on Thursday 29th November 2018 This exercise uses the BER MetaOCaml compiler, which you can install via opam. The end of this document
More informationCIS24 Project #3. Student Name: Chun Chung Cheung Course Section: SA Date: 4/28/2003 Professor: Kopec. Subject: Functional Programming Language (ML)
CIS24 Project #3 Student Name: Chun Chung Cheung Course Section: SA Date: 4/28/2003 Professor: Kopec Subject: Functional Programming Language (ML) 1 Introduction ML Programming Language Functional programming
More informationn n Official Scala website n Scala API n
n Quiz 8 Announcements n Rainbow grades: HW1-8, Quiz1-6, Exam1-2 n Still grading: HW9, Quiz 7 Scala n HW10 due today n HW11 out today, due Friday Fall 18 CSCI 4430, A Milanova 1 Today s Lecture Outline
More informationCSCI 2041: First Class Functions
CSCI 2041: First Class Functions Chris Kauffman Last Updated: Thu Oct 18 22:42:48 CDT 2018 1 Logistics Assignment 3 multimanager Reading OCaml System Manual: Ch 26: List and Array Modules, higher-order
More informationCS:3820 Programming Language Concepts
CS:3820 Programming Language Concepts Imperative languages, environment and store, micro-c Copyright 2013-18, Peter Sestoft and Cesare Tinelli. Created by Cesare Tinelli at the University of Iowa from
More informationPrinciples of Programming Languages COMP251: Functional Programming in Scheme (and LISP)
Principles of Programming Languages COMP251: Functional Programming in Scheme (and LISP) Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology
More informationProgramovací jazyky F# a OCaml. Chapter 3. Composing primitive types into data
Programovací jazyky F# a OCaml Chapter 3. Composing primitive types into data Data types» We can think of data type as a set: int = -2, -1, 0, 1, 2, More complicated with other types, but possible» Functions
More informationHandout 2 August 25, 2008
CS 502: Compiling and Programming Systems Handout 2 August 25, 2008 Project The project you will implement will be a subset of Standard ML called Mini-ML. While Mini- ML shares strong syntactic and semantic
More informationFunctional Programming for Imperative Programmers
Functional Programming for Imperative Programmers R. Sekar This document introduces functional programming for those that are used to imperative languages, but are trying to come to terms with recursion
More informationCSC324 Principles of Programming Languages
CSC324 Principles of Programming Languages http://mcs.utm.utoronto.ca/~324 November 14, 2018 Today Final chapter of the course! Types and type systems Haskell s type system Types Terminology Type: set
More informationIntroduction to Typed Racket. The plan: Racket Crash Course Typed Racket and PL Racket Differences with the text Some PL Racket Examples
Introduction to Typed Racket The plan: Racket Crash Course Typed Racket and PL Racket Differences with the text Some PL Racket Examples Getting started Find a machine with DrRacket installed (e.g. the
More informationFunctional Programming
The Meta Language (ML) and Functional Programming Daniel S. Fava danielsf@ifi.uio.no Department of informatics University of Oslo, Norway Motivation ML Demo Which programming languages are functional?
More informationSNU Programming Language Theory
SNU 4541.574 Programming Language Theory Polymorphism Polymorphism We encountered the concept of polymorphism very briefly last time. Let s look at it now in a bit more detail. # let rec last l = match
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 informationThe type checker will complain that the two branches have different types, one is string and the other is int
1 Intro to ML 1.1 Basic types Need ; after expression - 42 = ; val it = 42 : int - 7+1; val it = 8 : int Can reference it - it+2; val it = 10 : int - if it > 100 then "big" else "small"; val it = "small"
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Operational Semantics CMSC 330 Summer 2018 1 Formal Semantics of a Prog. Lang. Mathematical description of the meaning of programs written in that language
More informationProgramming Languages
Trends in Programming Languages ICALEPCS 2011 Markus Voelter Independent/itemis voelter@acm.org A single language to rule them all An ecosystem of languages An ecosystem of languages The Pendulum Swings
More informationCPS 506 Comparative Programming Languages. Programming Language Paradigm
CPS 506 Comparative Programming Languages Functional Programming Language Paradigm Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages The First Functional Programming
More informationWith examples in F# and C# SAMPLE CHAPTER. Tomas Petricek. WITH Jon Skeet FOREWORD BY MADS TORGERSEN MANNING
With examples in F# and C# SAMPLE CHAPTER Tomas Petricek WITH Jon Skeet FOREWORD BY MADS TORGERSEN MANNING Real-World Functional Programming by Tomas Petricek with Jon Skeet Chapter 12 Copyright 2010 Manning
More informationTypes, Semantics, and Programming Languages (IK3620)
Types, Semantics, and Programming Languages (IK3620) Exercises for Module 1 Operational semantics and the lambda calculus Version 1.02 David Broman KTH Royal Institute of Technology dbro@kth.se October
More informationMap and Fold. Prof. Clarkson Fall Today s music: Selections from the soundtrack to 2001: A Space Odyssey
Map and Fold Prof. Clarkson Fall 2015 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Question How much progress have you made on A1? A. I'm still figuring out how Enigma works.
More informationLECTURE 16. Functional Programming
LECTURE 16 Functional Programming WHAT IS FUNCTIONAL PROGRAMMING? Functional programming defines the outputs of a program as a mathematical function of the inputs. Functional programming is a declarative
More informationMid-Term 2 Grades
Mid-Term 2 Grades 100 46 1 HW 9 Homework 9, in untyped class interpreter: Add instanceof Restrict field access to local class Implement overloading (based on argument count) Due date is the same as for
More informationCSE 130, Fall 2006: Final Examination
CSE 130, Fall 2006: Final Examination Name: ID: Instructions, etc. 1. Write your answers in the space provided. 2. Wherever it says explain, write no more than three lines as explanation. The rest will
More informationDOT NET Syllabus (6 Months)
DOT NET Syllabus (6 Months) THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In- Time Compilation and CLS Disassembling.Net Application to IL
More informationCITS 3242 Programming Paradigms Part II. Topic 10: Imperative Programming
CITS 3242 Programming Paradigms Part II Topic 10: Imperative Programming This topic covers the background and motivations for imperative programming, as well as the imperative constructs in F# - reference
More informationProgramming Systems in Artificial Intelligence Functional Programming
Click to add Text Programming Systems in Artificial Intelligence Functional Programming Siegfried Nijssen 8/03/16 Discover thediscover world at the Leiden world University at Leiden University Overview
More informationUsing Scala in CS241
Using Scala in CS241 Winter 2018 Contents 1 Purpose 1 2 Scala 1 3 Basic Syntax 2 4 Tuples, Arrays, Lists and Vectors in Scala 3 5 Binary output in Scala 5 6 Maps 5 7 Option types 5 8 Objects and Classes
More informationVariables and Bindings
Net: Variables Variables and Bindings Q: How to use variables in ML? Q: How to assign to a variable? # let = 2+2;; val : int = 4 let = e;; Bind the value of epression e to the variable Variables and Bindings
More informationIntroduction to Delimited Continuations. Typing Printf. Printf. Kenichi Asai. Ochanomizu University. April 13, 2008
Introduction to Delimited Continuations Typing Printf Printf Kenichi Asai Ochanomizu University April 13, 2008 Outline of the talk times (introduction) (1) in Direct Style with exception (2) in Continuation-Passing
More informationCSCC24 Functional Programming Scheme Part 2
CSCC24 Functional Programming Scheme Part 2 Carolyn MacLeod 1 winter 2012 1 Based on slides from Anya Tafliovich, and with many thanks to Gerald Penn and Prabhakar Ragde. 1 The Spirit of Lisp-like Languages
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 informationLists. Michael P. Fourman. February 2, 2010
Lists Michael P. Fourman February 2, 2010 1 Introduction The list is a fundamental datatype in most functional languages. ML is no exception; list is a built-in ML type constructor. However, to introduce
More informationChapter 15. Functional Programming Languages
Chapter 15 Functional Programming Languages Copyright 2009 Addison-Wesley. All rights reserved. 1-2 Chapter 15 Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages
More informationParsing Scheme (+ (* 2 3) 1) * 1
Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes
More informationTyped Functional Programming In OCaml
Typed Functional Programming In OCaml Fabrice Le Fessant fabrice.le_fessant@{inria.fr,ocamlpro.com} November 6, 2013 Introducing Myself Full-time researcher at INRIA, programming languages and distributed
More informationCSE341 Spring 2017, Final Examination June 8, 2017
CSE341 Spring 2017, Final Examination June 8, 2017 Please do not turn the page until 8:30. Rules: The exam is closed-book, closed-note, etc. except for both sides of one 8.5x11in piece of paper. Please
More informationIntroduction to Functional Programming in Haskell 1 / 56
Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order
More information02157 Functional Programming. Michael R. Ha. Lecture 3: Programming as a model-based activity. Michael R. Hansen
Lecture 3: as a model-based activity nsen 1 DTU Compute, Technical University of Denmark Lecture 3: as a model-based activity MRH 20/09/2018 Overview RECAP Higher-order functions (lists) Type inference
More informationIntroduction to ML. Based on materials by Vitaly Shmatikov. General-purpose, non-c-like, non-oo language. Related languages: Haskell, Ocaml, F#,
Introduction to ML Based on materials by Vitaly Shmatikov slide 1 ML General-purpose, non-c-like, non-oo language Related languages: Haskell, Ocaml, F#, Combination of Lisp and Algol-like features (1958)
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL19: Heterogeneous Metaprogramming in F# Ian Stark School of Informatics The University of Edinburgh Monday 15 March 2010 Semester 2 Week 10 E H U N I V E R
More informationShared state model. April 3, / 29
Shared state April 3, 2012 1 / 29 the s s limitations of explicit state: cells equivalence of the two s programming in limiting interleavings locks, monitors, transactions comparing the 3 s 2 / 29 Message
More informationA Brief Introduction to Common Lisp
A Brief Introduction to Common Lisp David Gu Schloer Consulting Group david_guru@gty.org.in A Brief History Originally specified in 1958, Lisp is the second-oldest highlevel programming language in widespread
More informationBibliography. Analyse et Conception Formelle. Lesson 5. Crash Course on Scala. Scala in a nutshell. Outline
Bibliography Analyse et Conception Formelle Lesson 5 Crash Course on Scala Simply Scala. Onlinetutorial: http://www.simply.com/fr http://www.simply.com/ Programming in Scala, M. Odersky, L. Spoon, B. Venners.
More informationCS Lectures 2-3. Introduction to OCaml. Polyvios Pratikakis
CS 490.40 Lectures 2-3 Introduction to OCaml Polyvios Pratikakis Based on slides by Jeff Foster History ML: Meta Language 1973, University of Edinburg Used to program search tactics in LCF theorem prover
More informationCS3110 Spring 2016 Lecture 6: Modules
CS3110 Spring 2016 Lecture 6: Modules Modules are the O part of OCaml, influenced by objects in Java. We see the evolution: Classic ML, CambridgeML (CAML), and finally OCaml. David McQueen is writing the
More information