+ All Categories
Home > Documents > Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 ·...

Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 ·...

Date post: 28-May-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
15
Embedded Domain Specific Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady ([email protected]) University of St Andrews, Scotland, UK @edwinbrady SSGEP, Oxford, 6th July 2015
Transcript
Page 1: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Embedded Domain Specific Languages in IdrisLecture 1: Fundamentals of Idris

Edwin Brady ([email protected])University of St Andrews, Scotland, UK

@edwinbrady

SSGEP, Oxford, 6th July 2015

Page 2: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Scotland

Page 3: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Welcome to Fife

Page 4: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Security Error!

Page 5: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Idris is a Pac-man Complete functional programming languagewith dependent types

cabal update; cabal install idris

http://idris-lang.org/download

http://idris-lang.org/SSGEP/

This course is in three parts:

Today: Fundamentals: A tour of Idris

Tomorrow: Writing Domain Specific Languages in Idris

Thursday: Managing side-effects and resources

Page 6: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Idris is a Pac-man Complete functional programming languagewith dependent types

cabal update; cabal install idris

http://idris-lang.org/download

http://idris-lang.org/SSGEP/

This course is in three parts:

Today: Fundamentals: A tour of Idris

Tomorrow: Writing Domain Specific Languages in Idris

Thursday: Managing side-effects and resources

Page 7: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Why types?

We can use type systems for:

Checking a program has the intended properties

Guiding a programmer towards a correct program

Building expressive and generic libraries

Dependent Types allow types to be predicated on values

More precise specification of properties

More help from the compiler

Types as a first class language construct

Page 8: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Why types?

We can use type systems for:

Checking a program has the intended properties

Guiding a programmer towards a correct program

Building expressive and generic libraries

Dependent Types allow types to be predicated on values

More precise specification of properties

More help from the compiler

Types as a first class language construct

Page 9: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 10: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 11: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 12: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 13: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 14: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction

Page 15: Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of … · 2015-07-08 · Embedded Domain Speci c Languages in Idris Lecture 1: Fundamentals of Idris Edwin Brady

Full dependent types

Functions can compute types, types can contain values

Compiled (via C, Javascript, . . . )

Optimisations: aggressive erasure, inlining, partial evaluation

Type classes, like Haskell

No deriving, yetFunctor, Applicative, Monad, do notation, idiom brackets

Strict evaluation order, unlike Haskell

Lazy as a type

dsl blocks

Codata (badly)

Foreign functions, system interaction


Recommended