Scheme ML Review & Preview 재귀와 반복(recursion and iteration)

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
지도교사 : 김은이 선생님 연현초등학교 5 학년 조인해 연현초등학교 5 학년 최지원 우리는 항상 먹기 싫은 쓴 약을 먹을 때 달콤한 주스 나 탄산음료와 함께 마시면 쓴 약을 쉽게 먹을 수 있 을 텐데, 사람들은 감기약, 두통약, 영양제등과 같은 알약을 먹을 때 너무나.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
팀명 : 정효가현팀 팀원 : 김효진, 이가현, 이정민
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
C++ Espresso 제1장 기초 사항.
비뇨계통.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
최윤정 Java 프로그래밍 클래스 상속 최윤정
고교평준화의 득과 실 김영주 이지영 최윤영.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Internet Computing KUT Youn-Hee Han
제9장 추상 데이터 타입 및 모듈 (Abstract Data Type & Module)
프로그래밍언어론 2nd edition Tucker and Noonan
화면(UI) 기반 도메인모델 작성 2014년 8월.
NML 프로그래밍 소개 2004년 9월 9일 신재호 서울대학교 컴퓨터공학부 년 봄, A 수업에서 김재황님이 사용했던 것을 다듬은 자료입니다.
후 공진향 피부 비책 마스크 3종 Beauty. 컨텐츠 개발팀.
2010학년도 2학기 객체지향의 이해.
Power Java 제7장 클래스와 객체.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
C ++ 프로그래밍 시작.
C++ Espresso 제12장 템플릿.
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Tail-recursive Function, High-order Function
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
공학컴퓨터프로그래밍 Python 염익준 교수.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
Method & library.
프로그램 식 조합 방법 <expr> ::= <constant> | <name>
27장. 모듈화 프로그래밍.
(신)비취가인천비방진연3종기획1 182,000 ▶ 91,000 (신)비취가인 천비방 진연수
인터넷응용프로그래밍 Atom(개발 환경).
소금물과 물의 부력 차이 실험 작성자 - 백민준.
2장. 변수와 타입.
프로그래밍언어론 2nd edition Tucker and Noonan
Lecture 8 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant 데이터 구성 list pair
사과는 왜 갈변 할까? 조장: 31017유수빈 조원:31024이지은.
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
Lecture 7 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant list set
Fucntion 요약.
Signature, Strong Typing
Signature, Strong Typing
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
과학 1 학년 2 학기 생명> 04.태아의 발생 과정은 어떻게 진행될까?[ 4 / 6 ] 수정과 착상 수업계획 수업활동.
Signature, Strong Typing
<2013 과학탐구 보고서> 우유와 발효유가 일정온도에서 만나면?
Lecture 4 C 프로그램 구성의 기본 C 프로그램에서 이름짓기 C 프로그램에서 이름 충돌/이름 재사용.
다문화 사회의 이해 배 상 훈 . 1. 한국사회의 다문화현상 2. 원인과 정책으로 살펴본 다문화 한국사회.
P 보일의 법칙 - 생각열기 – 기포가 수면으로 올라가면 크기는 어떻게 될까?
[297탄] 반드시 길러야 할 4가지 공부 습관 자습 습관 복습 습관 동기부여 습관 셀프 테스트 습관
Ⅱ. 물질의 특성 물질의 끓는점.
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
제안 제도 운영방안.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
Spring, 2019 School of CSE Pusan National University
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
Programming Language Technology Trends
SNU 컴퓨터의 기초 월 14:00-16:00 43동101호 ropas. snu. ac
후 스파 바디 에센스 오일 왕후의 궁중 목욕비방을 담아 비단결 바디피부를 만들리라_ 세요설부(細腰雪膚)의 조건_
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
바꾸기 mutation: 값이 아니라 물건으로 생각하기
Presentation transcript:

Scheme ML Review & Preview 재귀와 반복(recursion and iteration) 함수로 요약하기(procedural abstraction) 데이터로 요약하기(data abstraction) 물건중심의 프로그래밍(objects and imperative programming) 값중심의 프로그래밍(values and applicative programming) 타입을 갖춘 프로그래밍(types and typeful programming) 모듈과 계층구조로 요약하기(modularity and hierarchy) 실행흐름의 관리(exceptions and advanced control) 맞는 프로그램인지 확인하기(program proof) Scheme ML

Typeful Programming 타입의 유용함, 겪어보았지요? 프로그램을 짤 때 머리속을 정리해 주는. 버그가 덜 생기게 해주는. “type discipline” = 타입중심 + 타입어긋나지말자 신세계 = “type discipline”을 강요하고, 타입대로 잘 돌지 미리 자동으로 검증해 주는 시스템

Technology for typeful programming automatic check for type-safety. the check is proven safe. types are infered(“인공지능”). no need for programmer’s comments about expression types polymorphic types no need for separate copies of “same” functions for different types let fun f(x) = x in (f 1, f “a”) end

ML programming applicative programming value-oriented, not machine-oriented 값만 생각하는 프로그래밍 복잡한 머리는 터트려버려라

F-22 Standard ML/NJ

Rafale Ocaml

대형 프로그래밍을 위한 기술들supports for programming-in-the-large 모듈 = 정의들 + 박스포장 + 박스이름 “module”, “.c file”, “structure”, “package” 모듈 타입 = 박스안에 있는 정의들의 타입들 “interface”, “.h file”, “module type”, “signature” 일반화된 모듈 = 모듈을 인자로 받는 모듈 “generic package”, “class template”, “functor”, “parameterized module” 타입 시스템 모듈 정의대로 외부에서 사용하는 지 자동으로 첵크 겉으로 드러내기로 한 내용만 사용하는 지 자동으로 첵크

Modules in ML 이 보따리 이름은 Box val x = … type t=A|B … module Box = struct end Box.x … Box.A module(보따리)는 정의한(이름붙인) 것들을 하나로 모아놓고 이름붙여 놓은 것 입니다.

Modules in ML 그러한 보따리의 타입: module type S = sig … val x: int -> int end val x: int -> int type t val x: int -> int type t = A|B signature matching module XX: S = struct … end val x: int -> int

Modules in ML function(함수)는 값을 받아서 값을 만드는 함수 fun f(x,y) = x+y functor(모듈함수)는 모듈을 받아서 모듈을 만드는 함수 functor F(X,Y) = struct … end module F (X: sig … end, Y: sig … end) = struct … end module F (X: S1, Y: S2) = struct … end

module type Animal = sig val age: int val think: string -> bool val feel: string -> bool end module Couple (Beauty: Animal, Beast: Animal) = struct val age = Beauty.age + Beast.age let think x = (Beauty.think x) || (Beast.think x) let feel x = (Beauty.feel x) && (Beast.feel x) end

module type CAR = sig type speed type fuel val accelerator: int -> speed val break: int -> speed val fill_tank: int -> fuel end module Porche = struct type speed = int type fuel = EMPTY | FULL of int let accelerator n = n**n let break n = n/10 let fill_tank n = FULL n end

module type CAR = sig type speed type fuel val accelerator: int -> speed val break: int -> speed val fill_tank: int -> fuel end module DriverSchool(Car: CAR) = struct let speed_up n = Car.accelerator n let slow_down n = Car.break n let get_ready n = Car.fill_tank n end module TicoDriver = DriverSchool(Tico) module PorcheDriver = DriverSchool(Porche)

module type STACK = sig type atom type ‘a stack val empty_stack: atom stack val push: atom * atom stack -> atom stack end module MakeStack(S: sig type t end) = struct type atom = S.t type ‘a stack = ‘a list let empty_stack = [] let push (x, stk) = x::stk end

structure IntStk = MakeStack(struct type t = int end) structure StrStk = MakeStack(struct type t = string end) structure PairStk = MakeStack(struct type t = int * string end)