함수형 프로그래밍 언어 스칼라(Scala) 소개

37
p.s. 본 문서는 Scala의 가장 기초적인 문법만을 다루고 있습니다.

Transcript of 함수형 프로그래밍 언어 스칼라(Scala) 소개

Page 1: 함수형 프로그래밍 언어 스칼라(Scala) 소개

p.s. 본문서는 Scala의가장기초적인문법만을다루고있습니다.

Page 2: 함수형 프로그래밍 언어 스칼라(Scala) 소개

1. 함수형언어란?

2. 스칼라의탄생

3. 스칼라기초문법

4. 스칼라의특징

5. 참조

*목차*

by 토니토닉 2

Page 3: 함수형 프로그래밍 언어 스칼라(Scala) 소개

Image source : http://matt.might.net/articles/compiling-up-to-lambda-calculus/images/y_combinator.jpg

Image source : http://img.brothersoft.com/screenshots/softimage/l/lambda_calculator-365323-1273647129.jpeg

by 토니토닉

3

Page 4: 함수형 프로그래밍 언어 스칼라(Scala) 소개

Image source : http://languagelog.ldc.upenn.edu/myl/BlondieLambda.gif

by 토니토닉

4

Page 5: 함수형 프로그래밍 언어 스칼라(Scala) 소개

John McCarthy (1927.09.04 ~ 2011.10.24)미국 MIT에서 LISP를개발한개발자.Image source : http://z4.enha.kr/http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/John_McCarthy_Stanford.jpg/320px-John_McCarthy_Stanford.jpg

특징 명령형 방법 함수형 방법

프로그래머가 중점을 두는 부분 작업을 수행하는 방법(알고리즘)과 상태의 변경을 추적하는 방법

원하는 정보와 필요한 변환

상태 변경 중요 존재하지 않음

실행 순서 중요 중요도가 낮음

주요 흐름 제어 루프, 조건 및 함수(메서드) 호출 재귀를 비롯한 함수 호출

주요 조작 단위 클래스나 구조체의 인스턴스 1급(first-class) 개체와 데이터 컬렉션인 함수by 토니토닉

5

※함수형프로그래밍언어의한갈래

Page 6: 함수형 프로그래밍 언어 스칼라(Scala) 소개

Image source : http://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Mark_Odersky_photo_by_Linda_Poeng.jpg/220px-Mark_Odersky_photo_by_Linda_Poeng.jpg

by 토니토닉 6

Page 7: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 7

Image source : http://markgoldenstein.com/scala-vs-java-weniger-code-mehr-inhalt/

Page 8: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 8

Page 9: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 9

Page 10: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 10

Page 11: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 11

* capitalize 함수는문자열의첫글자를대문자로바꿔서반환하는함수

Page 12: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 12

Page 13: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 13

https://groups.google.com/forum/#!topic/scala-korea/dfkcfM5yM9M

Page 14: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 14

Page 15: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 15

Page 16: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 16

Page 17: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 17http://www.slideshare.net/ennorunne/scala-for-java-programmers-2973915

Page 18: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 18

Page 19: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 19

http://www.scala-lang.org/old/node/71%3Fsize=_original.html#

• null• nothing(=Nil)

Page 20: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 20

Page 21: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 21

Page 22: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 22

클로저라는 이름은 함수 리터럴의 본문에 있는 모든 자유변수(free variable) 에 대한 바인딩(binding)을 ‘포획(capturing)’해서 자유 변수가 없게 ‘닫는(closing)’행위에서 따온 말.

Page 23: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 23

Page 24: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 24

Page 25: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 25

<결과화면>

getter, setter | (혹은 property) 개념

Page 26: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 26

Page 27: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 27

Page 28: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 28

Page 29: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 29

Page 30: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 30

1. 처음으로 t가 Sum인지 확인한다. 만약 맞다면 왼쪽 서브트리를새로운 변수 l에 오른쪽 서브트리를 새로운 변수 r에 할당 한다. 그리고 화살표를 따라 화살표의 오른편으로 계산을 이어 나간다. 화살표의 오른편에서는 화살표의 왼편에서 할당된 변수 l과 r을사용 한다.

2. 첫번째 확인이 성공하지 못하면 트리는 Sum이 아니라는 이야기이다. 다음으로는 t가 Var인지 확인한다. 만약 맞다면 Var 노드 안에 포함된 이름을 변수 n에 할당한다. 그리고 화살표의 오른쪽으로 진행한다.

3. 두번째 확인 역시 실패하면 t는 Sum도 Var도 아니라는 뜻이다. 이제는 Const에 대해 확인 해본다. 만약 맞다면 Const 노드 안의값을 변수 v에 할당하고 화살표의 오른쪽으로 진행한다.

4. 마지막으로 모든 확인이 실패하면 패턴 매칭이 실패 했음을 알리는 예외가 발생하게 된다. 이러한 상황은 확인 한 것 외에 Tree의하위 클래스가 더 존재 할 경우 일어난다.

Page 31: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 31

Page 32: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 32

Page 33: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 33

Page 34: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 34

Page 35: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 35

Page 37: 함수형 프로그래밍 언어 스칼라(Scala) 소개

by 토니토닉 37