SlideShare a Scribd company logo
1 of 35
Dependent Types
with
Abdulsattar
Motivation
def first(arr) do
List.first arr
end
Points of Failure:
1. arr is not an array
2. arr is null
3. arr is empty
Motivation
public int first(int[] arr)
{
return arr[0];
}
Points of Failure:
1. arr is not an array
2. arr is null
3. arr is empty
Motivation
first :: [Int] -> Int
first arr = arr !! 0
Points of Failure:
1. arr is not an array
2. arr is null
3. arr is empty
Actual Requirement
arr must be an array of at least 1 length
Problem
first :: [Int] -> Int
first arr = arr !! 0
public int first(int[] arr)
{
return arr[0];
}
def first(arr) do
List.first arr
end
anything → anything (or runtime error)
array or null → int (or runtime error)
array → int (or runtime error)
Problem
Types don’t capture all the invariants
Dependent Types
Dependent Types allow types to depend on values.
e.g. length of a list can be part of the type of the list
Natural Numbers
data Nat = Z | S Nat
zero = Z
one = S Z
two = S (S Z)
…
Operations
plus : Nat -> Nat -> Nat
plus Z y = y
plus (S k) y = S (plus k y)
0 + y = y
(1 + x) + y = 1 + (x + y)
0 ✕ y = 0
(1 + x) ✕ y = y + (x ✕ y)
mult : Nat -> Nat -> Nat
mult Z y = Z
mult (S k) y = plus y (mult k y)
Vectors
data Vect : Nat -> Type -> Type where
Nil : Vect Z a
(::) : a -> Vect k a -> Vect (S k) a
zeroVect : Vect 0 Int
zeroVect = Nil
oneVect : Vect 1 Int
oneVect = 3 :: Nil
threeVect : Vect 3 String
threeVect = "I" :: "hope" :: "i'm not confusing you" :: Nil
Solution
first : Vect (S k) a -> a
first (x::xs) = x
Points of Failure:
1. arr is not an array
2. arr is null
3. arr is empty
Concatenation
(++) : Vect n a -> Vect m a -> Vect (n + m) a
(++) Nil ys = ys
(++) (x :: xs) ys = x :: xs ++ ys
Concatenation
(++) : Vect n a -> Vect m a -> Vect (n + m) a
(++) Nil ys = ys
(++) (x :: xs) ys = x :: xs ++ xs
Error: Expected Vect (n + m) a; Got Vect (n + n) a
* Not actual error message
Interactive Editing
DEMO
First-Class Types
A : Type
A = Int
b : A
b = 3
First-Class Types
A : Bool -> Type
A True = Int
A False = String
b : A True
b = 3
c : A True
c = "Idris"
Type-safe Printf
printf "Hello %s" "world"
printf "%d times" 1
printf "%d times" 3 3
ERROR!
Type-safe Printf
printf "Hello %s" "world"
printf "%d times" 1
Type-safe Printf
printf "Hello %s" : String -> String
printf "%d times" : Int -> String
Type-safe Printf
printf : (str : String) -> <Function type depending on str>
Type-safe Printf
printf : (str : String) -> PrintfType str
Type-safe Printf
printf : (str : String) -> PrintfType (toFormat (unpack str))
toFormat : List Char -> Format
PrintfType : Format -> Type
Type-safe Printf
data Format = Number Format
| Str Format
| Lit Char Format
| End
> toFormat (unpack "a%s")
Lit 'a' (Str End) : Format
> toFormat (unpack "%d")
Number End
Type-safe Printf
toFormat : (xs : List Char) -> Format
toFormat [] = End
toFormat ('%' :: 's' :: xs) = Str (toFormat xs)
toFormat ('%' :: 'd' :: xs) = Number (toFormat xs)
toFormat (x :: xs) = Lit x (toFormat xs)
Type-safe Printf
PrintfType : Format -> Type
PrintfType (Number fmt) = Int -> PrintfType fmt
PrintfType (Str fmt) = String -> PrintfType fmt
PrintfType (Lit x fmt) = PrintfType fmt
PrintfType End = String
Type-safe Printf
printf : (str : String) -> PrintfType (toFormat (unpack str))
printf str = printfFmt _ ""
where
printfFmt : (fmt : Format) -> (acc : String) -> PrintfType fmt
printfFmt (Number fmt) acc = i => printfFmt fmt (acc ++ show i)
printfFmt (Str fmt) acc = s => printfFmt fmt (acc ++ s)
printfFmt (Lit x fmt) acc = printfFmt fmt (acc ++ (singleton x))
printfFmt End acc = acc
Type-safe File Handles
DEMO
Even Numbers
data Even : Nat -> Type where
EZ : Even Z
ES : Even k -> Even (S (S k))
zeroIsEven : Even 0
zeroIsEven = EZ
twoIsEven : Even 2
twoIsEven = ES EZ
Proofs
Theorem: 4 is even
0 is even
0 + 2 is even
(0 + 2) + 2 is even
fourIsEven : Even 4
fourIsEven = ES (ES EZ)
Idris
Curry Howard Correspondence
Theorems correspond to Types
Proofs correspond to Programs
Equality
data (=) : a -> b -> Type where
Refl : x = x
twoIsTwo : 2 = 2
twoIsTwo = Refl
3Plus2IsFive : 3 + 2 = 5
3Plus2IsFive = Refl
Falsity or the Empty Type
twoPlusTwoIsNotFive : 2 + 2 = 5 -> Void
twoPlusTwoIsNotFive Refl impossible
data Void : Type where
Takeaway
Make illegal state unrepresentable
Thank You!
Abdulsattar
asattar.md@gmail.com

More Related Content

What's hot

python- Variables and data types
python- Variables and data typespython- Variables and data types
python- Variables and data typesSreejaRamesh2
 
The Ring programming language version 1.6 book - Part 21 of 189
The Ring programming language version 1.6 book - Part 21 of 189The Ring programming language version 1.6 book - Part 21 of 189
The Ring programming language version 1.6 book - Part 21 of 189Mahmoud Samir Fayed
 
Types my way: Static Typing in Python
Types my way: Static Typing in PythonTypes my way: Static Typing in Python
Types my way: Static Typing in PythonJoe Cabrera
 
Numerical differentiation
Numerical differentiationNumerical differentiation
Numerical differentiationandrushow
 
アプリカティブファンクターとHaskell 2014版
アプリカティブファンクターとHaskell 2014版アプリカティブファンクターとHaskell 2014版
アプリカティブファンクターとHaskell 2014版infinite_loop
 
Stanfy MadCode Meetup #9: Functional Programming 101 with Swift
Stanfy MadCode Meetup #9: Functional Programming 101 with SwiftStanfy MadCode Meetup #9: Functional Programming 101 with Swift
Stanfy MadCode Meetup #9: Functional Programming 101 with SwiftStanfy
 
Swift Rocks #2: Going functional
Swift Rocks #2: Going functionalSwift Rocks #2: Going functional
Swift Rocks #2: Going functionalHackraft
 
The Ring programming language version 1.10 book - Part 27 of 212
The Ring programming language version 1.10 book - Part 27 of 212The Ring programming language version 1.10 book - Part 27 of 212
The Ring programming language version 1.10 book - Part 27 of 212Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 19 of 184
The Ring programming language version 1.5.3 book - Part 19 of 184The Ring programming language version 1.5.3 book - Part 19 of 184
The Ring programming language version 1.5.3 book - Part 19 of 184Mahmoud Samir Fayed
 
Swift rocks! #1
Swift rocks! #1Swift rocks! #1
Swift rocks! #1Hackraft
 
handling input output and control statements
 handling input output and control statements handling input output and control statements
handling input output and control statementsRai University
 
Monoids - Part 1 - with examples using Scalaz and Cats
Monoids - Part 1 - with examples using Scalaz and CatsMonoids - Part 1 - with examples using Scalaz and Cats
Monoids - Part 1 - with examples using Scalaz and CatsPhilip Schwarz
 
Csci101 lect05 formatted_output
Csci101 lect05 formatted_outputCsci101 lect05 formatted_output
Csci101 lect05 formatted_outputElsayed Hemayed
 

What's hot (20)

python- Variables and data types
python- Variables and data typespython- Variables and data types
python- Variables and data types
 
C tutoria input outputl
C tutoria input outputlC tutoria input outputl
C tutoria input outputl
 
The Ring programming language version 1.6 book - Part 21 of 189
The Ring programming language version 1.6 book - Part 21 of 189The Ring programming language version 1.6 book - Part 21 of 189
The Ring programming language version 1.6 book - Part 21 of 189
 
変数の型 - Java 演習
変数の型 - Java 演習 変数の型 - Java 演習
変数の型 - Java 演習
 
Python : Data Types
Python : Data TypesPython : Data Types
Python : Data Types
 
Types my way: Static Typing in Python
Types my way: Static Typing in PythonTypes my way: Static Typing in Python
Types my way: Static Typing in Python
 
Numerical differentiation
Numerical differentiationNumerical differentiation
Numerical differentiation
 
ملخص البرمجة المرئية - الوحدة السادسة
ملخص البرمجة المرئية - الوحدة السادسةملخص البرمجة المرئية - الوحدة السادسة
ملخص البرمجة المرئية - الوحدة السادسة
 
アプリカティブファンクターとHaskell 2014版
アプリカティブファンクターとHaskell 2014版アプリカティブファンクターとHaskell 2014版
アプリカティブファンクターとHaskell 2014版
 
Stanfy MadCode Meetup #9: Functional Programming 101 with Swift
Stanfy MadCode Meetup #9: Functional Programming 101 with SwiftStanfy MadCode Meetup #9: Functional Programming 101 with Swift
Stanfy MadCode Meetup #9: Functional Programming 101 with Swift
 
Swift Rocks #2: Going functional
Swift Rocks #2: Going functionalSwift Rocks #2: Going functional
Swift Rocks #2: Going functional
 
Matlab code for secant method
Matlab code for secant methodMatlab code for secant method
Matlab code for secant method
 
The Ring programming language version 1.10 book - Part 27 of 212
The Ring programming language version 1.10 book - Part 27 of 212The Ring programming language version 1.10 book - Part 27 of 212
The Ring programming language version 1.10 book - Part 27 of 212
 
3 flow
3 flow3 flow
3 flow
 
The Ring programming language version 1.5.3 book - Part 19 of 184
The Ring programming language version 1.5.3 book - Part 19 of 184The Ring programming language version 1.5.3 book - Part 19 of 184
The Ring programming language version 1.5.3 book - Part 19 of 184
 
Integracion y variables
Integracion y variablesIntegracion y variables
Integracion y variables
 
Swift rocks! #1
Swift rocks! #1Swift rocks! #1
Swift rocks! #1
 
handling input output and control statements
 handling input output and control statements handling input output and control statements
handling input output and control statements
 
Monoids - Part 1 - with examples using Scalaz and Cats
Monoids - Part 1 - with examples using Scalaz and CatsMonoids - Part 1 - with examples using Scalaz and Cats
Monoids - Part 1 - with examples using Scalaz and Cats
 
Csci101 lect05 formatted_output
Csci101 lect05 formatted_outputCsci101 lect05 formatted_output
Csci101 lect05 formatted_output
 

Viewers also liked

AdaptiveGRC_competitive_matrix_2016
AdaptiveGRC_competitive_matrix_2016AdaptiveGRC_competitive_matrix_2016
AdaptiveGRC_competitive_matrix_2016Rob Johnston, MBA
 
Mobile Survey Data - Quality and Validation - uSamp
Mobile Survey Data - Quality and Validation - uSampMobile Survey Data - Quality and Validation - uSamp
Mobile Survey Data - Quality and Validation - uSampMerlien Institute
 
The role of virtual currency in MoSoSo applications
The role of virtual currency in MoSoSo applicationsThe role of virtual currency in MoSoSo applications
The role of virtual currency in MoSoSo applicationsGiuseppe Lugano
 
Institutional Voice: What Are We Trying to Say? #MCN2016
Institutional Voice: What Are We Trying to Say? #MCN2016Institutional Voice: What Are We Trying to Say? #MCN2016
Institutional Voice: What Are We Trying to Say? #MCN2016Stephen Boyd
 
How CDW’s Employee Advocacy Program Created a Culture of Empowerment
How CDW’s Employee Advocacy Program Created a Culture of EmpowermentHow CDW’s Employee Advocacy Program Created a Culture of Empowerment
How CDW’s Employee Advocacy Program Created a Culture of EmpowermentSocialChorus
 
Copyright and piracy from moral and legal standpoints
Copyright and piracy from moral and legal standpointsCopyright and piracy from moral and legal standpoints
Copyright and piracy from moral and legal standpointsMario Hostelica
 
Cyber Safety: Privacy Options in Social Media Platforms
Cyber Safety: Privacy Options in Social Media PlatformsCyber Safety: Privacy Options in Social Media Platforms
Cyber Safety: Privacy Options in Social Media PlatformsAditi Rao
 
презентация1а.pptx 1
презентация1а.pptx 1презентация1а.pptx 1
презентация1а.pptx 1metodistinf
 
Digital Careers at a Crossroads: Next Steps, New Paths
Digital Careers at a Crossroads: Next Steps, New PathsDigital Careers at a Crossroads: Next Steps, New Paths
Digital Careers at a Crossroads: Next Steps, New PathsMax Evjen
 
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...NYFAGameDesign
 
Employee Engagement Steps: Questions to guide your one-on-one employee engage...
Employee Engagement Steps: Questions to guide your one-on-one employee engage...Employee Engagement Steps: Questions to guide your one-on-one employee engage...
Employee Engagement Steps: Questions to guide your one-on-one employee engage...Sheila Margolis
 
Priekules seniunija
Priekules seniunijaPriekules seniunija
Priekules seniunijagerberaB
 
โต้วาที
โต้วาทีโต้วาที
โต้วาทีAdd Jj
 
Smart watch flyer
Smart watch flyerSmart watch flyer
Smart watch flyerMobiloitte
 
38 Motivational Quotes About Business
38 Motivational Quotes About Business38 Motivational Quotes About Business
38 Motivational Quotes About BusinessBornevia
 

Viewers also liked (19)

Pratical eff
Pratical effPratical eff
Pratical eff
 
AdaptiveGRC_competitive_matrix_2016
AdaptiveGRC_competitive_matrix_2016AdaptiveGRC_competitive_matrix_2016
AdaptiveGRC_competitive_matrix_2016
 
Mobile Survey Data - Quality and Validation - uSamp
Mobile Survey Data - Quality and Validation - uSampMobile Survey Data - Quality and Validation - uSamp
Mobile Survey Data - Quality and Validation - uSamp
 
The role of virtual currency in MoSoSo applications
The role of virtual currency in MoSoSo applicationsThe role of virtual currency in MoSoSo applications
The role of virtual currency in MoSoSo applications
 
Institutional Voice: What Are We Trying to Say? #MCN2016
Institutional Voice: What Are We Trying to Say? #MCN2016Institutional Voice: What Are We Trying to Say? #MCN2016
Institutional Voice: What Are We Trying to Say? #MCN2016
 
校内宣传
校内宣传校内宣传
校内宣传
 
How CDW’s Employee Advocacy Program Created a Culture of Empowerment
How CDW’s Employee Advocacy Program Created a Culture of EmpowermentHow CDW’s Employee Advocacy Program Created a Culture of Empowerment
How CDW’s Employee Advocacy Program Created a Culture of Empowerment
 
Copyright and piracy from moral and legal standpoints
Copyright and piracy from moral and legal standpointsCopyright and piracy from moral and legal standpoints
Copyright and piracy from moral and legal standpoints
 
Cyber Safety: Privacy Options in Social Media Platforms
Cyber Safety: Privacy Options in Social Media PlatformsCyber Safety: Privacy Options in Social Media Platforms
Cyber Safety: Privacy Options in Social Media Platforms
 
презентация1а.pptx 1
презентация1а.pptx 1презентация1а.pptx 1
презентация1а.pptx 1
 
Digital Careers at a Crossroads: Next Steps, New Paths
Digital Careers at a Crossroads: Next Steps, New PathsDigital Careers at a Crossroads: Next Steps, New Paths
Digital Careers at a Crossroads: Next Steps, New Paths
 
Meta QSAR
Meta QSARMeta QSAR
Meta QSAR
 
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...
Game Designer Portfolio: Why Every Game Designer Should Have One And How To ...
 
Employee Engagement Steps: Questions to guide your one-on-one employee engage...
Employee Engagement Steps: Questions to guide your one-on-one employee engage...Employee Engagement Steps: Questions to guide your one-on-one employee engage...
Employee Engagement Steps: Questions to guide your one-on-one employee engage...
 
Priekules seniunija
Priekules seniunijaPriekules seniunija
Priekules seniunija
 
slideshare
slideshareslideshare
slideshare
 
โต้วาที
โต้วาทีโต้วาที
โต้วาที
 
Smart watch flyer
Smart watch flyerSmart watch flyer
Smart watch flyer
 
38 Motivational Quotes About Business
38 Motivational Quotes About Business38 Motivational Quotes About Business
38 Motivational Quotes About Business
 

Similar to Dependent Types with Idris

Introduction to Dependently Types: Idris
Introduction to Dependently Types: IdrisIntroduction to Dependently Types: Idris
Introduction to Dependently Types: IdrisAbdulsattar Mohammed
 
High Wizardry in the Land of Scala
High Wizardry in the Land of ScalaHigh Wizardry in the Land of Scala
High Wizardry in the Land of Scaladjspiewak
 
programs on arrays.pdf
programs on arrays.pdfprograms on arrays.pdf
programs on arrays.pdfsowmya koneru
 
Lists.pptx
Lists.pptxLists.pptx
Lists.pptxYagna15
 
Introduction to matlab lecture 3 of 4
Introduction to matlab lecture 3 of 4Introduction to matlab lecture 3 of 4
Introduction to matlab lecture 3 of 4Randa Elanwar
 
Model-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingModel-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingEelco Visser
 
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQProvectus
 
The Ring programming language version 1.8 book - Part 29 of 202
The Ring programming language version 1.8 book - Part 29 of 202The Ring programming language version 1.8 book - Part 29 of 202
The Ring programming language version 1.8 book - Part 29 of 202Mahmoud Samir Fayed
 
Python-3-compiled-Cheat-Sheet-version-3.pdf
Python-3-compiled-Cheat-Sheet-version-3.pdfPython-3-compiled-Cheat-Sheet-version-3.pdf
Python-3-compiled-Cheat-Sheet-version-3.pdfletsdism
 
mat lab introduction and basics to learn
mat lab introduction and basics to learnmat lab introduction and basics to learn
mat lab introduction and basics to learnpavan373
 
fds Practicle 1to 6 program.pdf
fds Practicle 1to 6 program.pdffds Practicle 1to 6 program.pdf
fds Practicle 1to 6 program.pdfGaneshPawar819187
 
The Ring programming language version 1.5.3 book - Part 35 of 184
The Ring programming language version 1.5.3 book - Part 35 of 184The Ring programming language version 1.5.3 book - Part 35 of 184
The Ring programming language version 1.5.3 book - Part 35 of 184Mahmoud Samir Fayed
 

Similar to Dependent Types with Idris (20)

Introduction to Dependently Types: Idris
Introduction to Dependently Types: IdrisIntroduction to Dependently Types: Idris
Introduction to Dependently Types: Idris
 
High Wizardry in the Land of Scala
High Wizardry in the Land of ScalaHigh Wizardry in the Land of Scala
High Wizardry in the Land of Scala
 
Python Lecture 11
Python Lecture 11Python Lecture 11
Python Lecture 11
 
programs on arrays.pdf
programs on arrays.pdfprograms on arrays.pdf
programs on arrays.pdf
 
Lists.pptx
Lists.pptxLists.pptx
Lists.pptx
 
Introduction to matlab lecture 3 of 4
Introduction to matlab lecture 3 of 4Introduction to matlab lecture 3 of 4
Introduction to matlab lecture 3 of 4
 
Model-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingModel-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error Checking
 
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ
[Expert Fridays] Александр Чичигин - Как перестать бояться и полюбить COQ
 
The Ring programming language version 1.8 book - Part 29 of 202
The Ring programming language version 1.8 book - Part 29 of 202The Ring programming language version 1.8 book - Part 29 of 202
The Ring programming language version 1.8 book - Part 29 of 202
 
2D array
2D array2D array
2D array
 
Arrays in C language
Arrays in C languageArrays in C language
Arrays in C language
 
Python-3-compiled-Cheat-Sheet-version-3.pdf
Python-3-compiled-Cheat-Sheet-version-3.pdfPython-3-compiled-Cheat-Sheet-version-3.pdf
Python-3-compiled-Cheat-Sheet-version-3.pdf
 
mat lab introduction and basics to learn
mat lab introduction and basics to learnmat lab introduction and basics to learn
mat lab introduction and basics to learn
 
fds Practicle 1to 6 program.pdf
fds Practicle 1to 6 program.pdffds Practicle 1to 6 program.pdf
fds Practicle 1to 6 program.pdf
 
The Ring programming language version 1.5.3 book - Part 35 of 184
The Ring programming language version 1.5.3 book - Part 35 of 184The Ring programming language version 1.5.3 book - Part 35 of 184
The Ring programming language version 1.5.3 book - Part 35 of 184
 
R Basics
R BasicsR Basics
R Basics
 
array.ppt
array.pptarray.ppt
array.ppt
 
Python Session - 3
Python Session - 3Python Session - 3
Python Session - 3
 
20100528
2010052820100528
20100528
 
20100528
2010052820100528
20100528
 

Recently uploaded

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Recently uploaded (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

Dependent Types with Idris

Editor's Notes

  1. :printdef the