FP, lazy evaluation

Funtional
Programming
FP, lazy evaluation
FP, lazy evaluation
FP, 오늘은 조금만..
FP가 되려면
• No mutable data(no side effect)

• No state (no implicit, hidden state)
어떤게 좋을까요
• 참조 투명성(Referential transparency)

• 추론하기 쉽다. 

• 느슨히 결합된 모듈이나 쓰레드간 객체를 안전하게 공유

• 모듈성과 재사용성이 높다. 

• 테스트하기 쉽다.
함수형 사고하기
• 왜 함수형 언어를 사용해야 할까?

• 패러다임 전환

• 언어 트렌드에 발 맞추기

• 언어/런타임에 제어를 양도하기

• 간결함
Functional thinking 중…
패러다임전환

- 단순함이 쉬움을 낳는다.

- map이나 filter같은 고계함수로 추상화
단계를 높여서 문제를 명료하게 한다.

언어 트렌드

- 메모제이션, 람다의 사용

- C++에도 2011년 표준에서 람다블록을
사용
오늘 이야기 할 내용
Lazy Evaluation
알고보면 주영님의 유산 generator도 같은 개념
필요할때 계산하고 사용하는 것들
Eager vs Lazy Evaluation
• Eager evaluation 

• 조급한 계산법(Eager evaluation) 

또는 엄격한 계산법(strict evaluation)

• 조급한 계산법에서 수식은 변수에 접근하는 순간 계산된다. 이것
은 저수준 전략으로 간단한 프로그래밍 언어에서는 일반적으로
더 효율적인 방법이다. 계산되지 않은 수식을 표시하는 중간 자
료 구조를 생성하고 관리할 필요가 없기 때문이다.
Eager vs Lazy Evaluation
• Lazy evaluation 

• 계산의 결과값이 필요할 때까지 늦추는 방법

• 느긋하게 계산하면 ? 

• 필요없는 계산을 하지 않으므로 실행을 더 빠르게 할 수 있고

• 복합 수식을 계산할 때 오류 상태를 피할 수 있고 

• 무한 자료 구조를 쓸 수 있고 

• 미리 정의된 것을 이용하지 않고 보통 함수로 제어 구조를 정의할 수 있다.

• 메모리 효율, CPU 효율
Eager vs Lazy Evaluation
• 흔히 사용하는 evaluation strategy

• By-Name

• 필요할 때까지 지연되고 계산은 사용 될 때마다 반복됩니다.

• By-Need

• 값 계산은 필요할 때까지 지연된 다음 결과가 후속 용도로 캐
시됩니다.
Lazy Evaluation
Call by Name
x + 10
= i + j + 10
= 10 + 5 + 10
= 25
x
= i + j
= 200 + 20
= 220
Lazy Evaluation
x + 10
= (param x) + 10
= (15) + 10
= 25
x
= (pram x)
= 15
Call by Need
Memoization
Tail Recursive
오늘 우리가 한번 맛 볼 것은?
Tail Call
FP, lazy evaluation
FP, lazy evaluation
FP, lazy evaluation
FP, lazy evaluation
https://play.golang.org/p/sGcz4Jzm7w4
FP, lazy evaluation
FP, lazy evaluation
다음 발표는 아마…
FP, lazy evaluation
FP, lazy evaluation
제가 아닐거예요..
감사합니다.
1 de 26

Recomendados

Why Functional Programming Matters por
Why Functional Programming MattersWhy Functional Programming Matters
Why Functional Programming MattersLee WonJae
1.2K vistas31 diapositivas
Functional Programming 01 por
Functional Programming 01Functional Programming 01
Functional Programming 01PeopleFund Company
739 vistas24 diapositivas
알고리즘 por
알고리즘 알고리즘
알고리즘 권 태혁
440 vistas26 diapositivas
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013) por
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)MinGeun Park
67.7K vistas18 diapositivas
알고리즘 문제해결전략 #1 por
알고리즘 문제해결전략 #1알고리즘 문제해결전략 #1
알고리즘 문제해결전략 #1Byeongsu Kang
7.2K vistas13 diapositivas
(책 소개) 쏙쏙 들어오는 인공지능 알고리즘 por
(책 소개) 쏙쏙 들어오는 인공지능 알고리즘(책 소개) 쏙쏙 들어오는 인공지능 알고리즘
(책 소개) 쏙쏙 들어오는 인공지능 알고리즘Jay Park
837 vistas10 diapositivas

Más contenido relacionado

Similar a FP, lazy evaluation

About Functional Programming Paradigms por
About Functional Programming Paradigms About Functional Programming Paradigms
About Functional Programming Paradigms Junho Yeo
11 vistas46 diapositivas
함수형 프로그래밍 por
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍CWMin
109 vistas42 diapositivas
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps... por
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
3.7K vistas59 diapositivas
[D2]pinpoint 개발기 por
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기NAVER D2
13.3K vistas52 diapositivas
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발 por
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
2.2K vistas61 diapositivas
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB) por
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
4.5K vistas61 diapositivas

Similar a FP, lazy evaluation (20)

About Functional Programming Paradigms por Junho Yeo
About Functional Programming Paradigms About Functional Programming Paradigms
About Functional Programming Paradigms
Junho Yeo11 vistas
함수형 프로그래밍 por CWMin
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
CWMin109 vistas
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps... por hoondong kim
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim3.7K vistas
[D2]pinpoint 개발기 por NAVER D2
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기
NAVER D213.3K vistas
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발 por 동현 김
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
동현 김2.2K vistas
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB) por NAVER D2
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
NAVER D24.5K vistas
201803 파이썬 세미나 por JeongHwan Kim
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
JeongHwan Kim759 vistas
Concurreny programming por Jaejin Yun
Concurreny programmingConcurreny programming
Concurreny programming
Jaejin Yun1K vistas
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 por 정주 김
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
정주 김18.6K vistas
100% Serverless big data scale production Deep Learning System por hoondong kim
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System
hoondong kim977 vistas
멸종하는 공룡이 되지 않으려면 por Byeongsu Kang
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang5.8K vistas
Spark machine learning & deep learning por hoondong kim
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learning
hoondong kim7.8K vistas
3팀_객체지향 프로그래밍.pptx por ssuser642b19
3팀_객체지향 프로그래밍.pptx3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx
ssuser642b1950 vistas
SK planet Streaming system por 용휘 김
SK planet Streaming systemSK planet Streaming system
SK planet Streaming system
용휘 김1.5K vistas
프로젝트 관리 및 지켜야 할 사항들 por Lee Geonhee
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
Lee Geonhee112 vistas
Transfer learning usage por Tae Young Lee
Transfer learning usageTransfer learning usage
Transfer learning usage
Tae Young Lee151 vistas
강화학습 & Unity ML Agents por Hyunjong Lee
강화학습 & Unity ML Agents강화학습 & Unity ML Agents
강화학습 & Unity ML Agents
Hyunjong Lee33 vistas
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019 por devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
좋은코드작성하기 por JD Yang
좋은코드작성하기좋은코드작성하기
좋은코드작성하기
JD Yang24.6K vistas

FP, lazy evaluation

  • 5. FP가 되려면 • No mutable data(no side effect) • No state (no implicit, hidden state)
  • 6. 어떤게 좋을까요 • 참조 투명성(Referential transparency) • 추론하기 쉽다. • 느슨히 결합된 모듈이나 쓰레드간 객체를 안전하게 공유 • 모듈성과 재사용성이 높다. • 테스트하기 쉽다.
  • 7. 함수형 사고하기 • 왜 함수형 언어를 사용해야 할까? • 패러다임 전환 • 언어 트렌드에 발 맞추기 • 언어/런타임에 제어를 양도하기 • 간결함 Functional thinking 중… 패러다임전환 - 단순함이 쉬움을 낳는다. - map이나 filter같은 고계함수로 추상화 단계를 높여서 문제를 명료하게 한다. 언어 트렌드 - 메모제이션, 람다의 사용 - C++에도 2011년 표준에서 람다블록을 사용
  • 8. 오늘 이야기 할 내용 Lazy Evaluation 알고보면 주영님의 유산 generator도 같은 개념 필요할때 계산하고 사용하는 것들
  • 9. Eager vs Lazy Evaluation • Eager evaluation • 조급한 계산법(Eager evaluation) 
 또는 엄격한 계산법(strict evaluation) • 조급한 계산법에서 수식은 변수에 접근하는 순간 계산된다. 이것 은 저수준 전략으로 간단한 프로그래밍 언어에서는 일반적으로 더 효율적인 방법이다. 계산되지 않은 수식을 표시하는 중간 자 료 구조를 생성하고 관리할 필요가 없기 때문이다.
  • 10. Eager vs Lazy Evaluation • Lazy evaluation • 계산의 결과값이 필요할 때까지 늦추는 방법 • 느긋하게 계산하면 ? • 필요없는 계산을 하지 않으므로 실행을 더 빠르게 할 수 있고 • 복합 수식을 계산할 때 오류 상태를 피할 수 있고 • 무한 자료 구조를 쓸 수 있고 • 미리 정의된 것을 이용하지 않고 보통 함수로 제어 구조를 정의할 수 있다. • 메모리 효율, CPU 효율
  • 11. Eager vs Lazy Evaluation • 흔히 사용하는 evaluation strategy • By-Name • 필요할 때까지 지연되고 계산은 사용 될 때마다 반복됩니다. • By-Need • 값 계산은 필요할 때까지 지연된 다음 결과가 후속 용도로 캐 시됩니다.
  • 12. Lazy Evaluation Call by Name x + 10 = i + j + 10 = 10 + 5 + 10 = 25 x = i + j = 200 + 20 = 220
  • 13. Lazy Evaluation x + 10 = (param x) + 10 = (15) + 10 = 25 x = (pram x) = 15 Call by Need Memoization
  • 14. Tail Recursive 오늘 우리가 한번 맛 볼 것은? Tail Call