SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
Системы типизации лямбда-исчисления

             Введение

          Денис Москвин




             27.02.2011

       CS Club при ПОМИ РАН




                                      1
Что такое типы?

Система типов     это гибко управляемый синтаксический
метод доказательства отсутствия в программе определен-
ных видов поведения при помощи классификации выражений
языка по разновидностям вычисляемых ими значений.

                                        Бенджамин Пирс

В рамках курса: программы      λ-термы, вычисление       их
редукция.

Типы    синтаксические конструкции, приписываемые тер-
мам по определённым правилам:

                         M:σ
                                                     2
Для чего нужны типы?

 Типы дают частичную спецификацию.

           f:N→N       g : (Πn : N. ∃m : N. m > n)


  Правильно типизированные программы не могут        сло-
маться . Робин Милнер (1978)

                 M:N ∧ M      v ⇒ v:N


  Типизированные программы всегда завершаются (это не
так :)

 Проверка типов отлавливает простые ошибки.
                                                     3
Основная литература (1)




LCWT
Henk Barendregt, Lambda calculi with types,
Handbook of logic in computer science (vol. 2), Oxford University
Press, 1993

ftp://ftp.cs.ru.nl/pub/CompMath.Found/HBK.ps




                                                           4
Основная литература (2)



TAPL
Benjamin C. Pierce, Types and Programming Languages, MIT
Press, 2002

http://www.cis.upenn.edu/~bcpierce/tapl

русский перевод:
Бенджамин Пирс, Типы в языках программирования, 2011

http://newstar.rinet.ru/~goga/tapl/


                                                   5
Основная литература (3)




ITT
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay

http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html




                                                        6
Дополнительная литература (1)


ATTAPL
Benjamin C. Pierce, editor. Advanced Topics in Types and Programming
Languages, MIT, 2005

I2FP
John Harrison, Introduction to Functional Programming

http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996

русский перевод:

http://code.google.com/p/funprog-ru/
                                                        7
Дополнительная литература (2)



ЛИСС
Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан-
тика, М:Мир, 1985
H. P. Barendregt, The Lambda calculus. Its Syntax and Semantics.
NHPC, 1981

ОЯП
Дж. Митчелл, Основания языков программирования,
М.-Ижевск, НИЦ РХД, 2010
John C. Mitchell, Foundations for Programming Languages, MIT
Press, 1996

                                                         8

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (8)

Práctica compra de ordenador
Práctica compra de ordenadorPráctica compra de ordenador
Práctica compra de ordenador
 
Doc1
Doc1Doc1
Doc1
 
Resultados futbol
Resultados futbolResultados futbol
Resultados futbol
 
El internet 801 elizabeth
El internet 801 elizabethEl internet 801 elizabeth
El internet 801 elizabeth
 
Unidad 3 matematica
Unidad 3 matematicaUnidad 3 matematica
Unidad 3 matematica
 
Leading the pack in blockchain banking Trailblazers set the pace
Leading the pack in blockchain banking Trailblazers set the paceLeading the pack in blockchain banking Trailblazers set the pace
Leading the pack in blockchain banking Trailblazers set the pace
 
BASES DE FUTBOL
BASES DE FUTBOLBASES DE FUTBOL
BASES DE FUTBOL
 
Cembre 2 Hole Crimp Lugs
Cembre 2 Hole Crimp LugsCembre 2 Hole Crimp Lugs
Cembre 2 Hole Crimp Lugs
 

Mehr von Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mehr von Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20110224 systems of_typed_lambda_calculi_moskvin_lecture01

  • 1. Системы типизации лямбда-исчисления Введение Денис Москвин 27.02.2011 CS Club при ПОМИ РАН 1
  • 2. Что такое типы? Система типов это гибко управляемый синтаксический метод доказательства отсутствия в программе определен- ных видов поведения при помощи классификации выражений языка по разновидностям вычисляемых ими значений. Бенджамин Пирс В рамках курса: программы λ-термы, вычисление их редукция. Типы синтаксические конструкции, приписываемые тер- мам по определённым правилам: M:σ 2
  • 3. Для чего нужны типы? Типы дают частичную спецификацию. f:N→N g : (Πn : N. ∃m : N. m > n) Правильно типизированные программы не могут сло- маться . Робин Милнер (1978) M:N ∧ M v ⇒ v:N Типизированные программы всегда завершаются (это не так :) Проверка типов отлавливает простые ошибки. 3
  • 4. Основная литература (1) LCWT Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 ftp://ftp.cs.ru.nl/pub/CompMath.Found/HBK.ps 4
  • 5. Основная литература (2) TAPL Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 http://www.cis.upenn.edu/~bcpierce/tapl русский перевод: Бенджамин Пирс, Типы в языках программирования, 2011 http://newstar.rinet.ru/~goga/tapl/ 5
  • 6. Основная литература (3) ITT Herman Geuvers, Introduction to Type Theory Alfa Lernet Summer school 2008, Uruguay http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html 6
  • 7. Дополнительная литература (1) ATTAPL Benjamin C. Pierce, editor. Advanced Topics in Types and Programming Languages, MIT, 2005 I2FP John Harrison, Introduction to Functional Programming http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996 русский перевод: http://code.google.com/p/funprog-ru/ 7
  • 8. Дополнительная литература (2) ЛИСС Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан- тика, М:Мир, 1985 H. P. Barendregt, The Lambda calculus. Its Syntax and Semantics. NHPC, 1981 ОЯП Дж. Митчелл, Основания языков программирования, М.-Ижевск, НИЦ РХД, 2010 John C. Mitchell, Foundations for Programming Languages, MIT Press, 1996 8